CSV ファイルから一部のデータを処理するための Python スクリプトを作成しました。CSV のサイズに応じて、スクリプトが完了するまでに 3 ~ 30 分かかります。
これに Web インターフェイスを追加して、どこからでも CSV データ ファイルをアップロードできるようにします。基本的な HTTP POST アップロード ページを作成し、Python の CGI モジュールを使用しましたが、しばらくするとスクリプトがタイムアウトしてしまいます。
このスクリプトは、最初に HTTP ヘッダーを出力し、CSV のすべての行を反復処理した後にデータのビットを出力します。例として、この print ステートメントは約 30 秒ごとにトリガーされます。
# at the very top, with the 'import's
print "Content-type: text/html\n\n Processing ... <br />"
# the really long loop.
for currentRecord in csvRecords:
count = count + 1
print "On line " + str(count) + " <br />"
ブラウザはヘッダーを受信し、少量のデータを受信し続けるため待機すると想定しました。しかし実際には、データをまったく受信せずError 504
、多数の行を含む CSV を指定するとタイムアウトになるようです。
どこかでキャッシングが行われているのではないでしょうか?ログから、
[Wed Jan 20 16:59:09 2010] [error] [client ::1] Script timed out before returning headers: datacruncher.py, referer: http://localhost/index.htm
[Wed Jan 20 17:04:09 2010] [warn] [client ::1] Timeout waiting for output from CGI script /Library/WebServer/CGI-Executables/datacruncher.py, referer: http://localhost/index.htm
これを解決する最善の方法は何ですか? または、そのようなスクリプトをブラウザーで実行するのは適切ではないでしょうか?
編集: これは私自身の使用のためのスクリプトです。通常は自分のコンピューターで使用するつもりですが、旅行中や電話などで Web ベースのインターフェイスが役立つと思いました。また、ダウンロードするものは何もありません。スクリプトは、おそらく最後にレポートを電子メールで送信します。