我编写了一个 python 脚本来处理 CSV 文件中的一些数据。该脚本需要 3 到 30 分钟才能完成,具体取决于 CSV 的大小。
现在我想为此添加一个 Web 界面,这样我就可以从任何地方上传 CSV 数据文件。我编写了一个基本的 HTTP POST 上传页面并使用了 Python 的 CGI 模块——但脚本在一段时间后就会超时。
该脚本在开始时输出 HTTP 标头,并在遍历 CSV 的每一行后输出数据位。例如,此打印语句将每 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 的界面可以在旅行时派上用场,或者例如通过电话。此外,实际上没有什么可下载的——脚本很可能会在最后通过电子邮件发送一份报告。