我写了一个
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 ...
"
# the really long loop.
for currentRecord in csvRecords:
count = count + 1
print "On line " + str(count) + "
"
我假设浏览器会收到标题,并等待,因为它继续接收少量数据.但实际上似乎发生的事情是它根本没有收到任何数据,并且在给出带有大量行的CSV时错误504超时.
也许在某处发生了一些缓存?从日志中,
[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的界面可以在旅行时派上用场,或者例如从手机上派上用场.此外,实际上没有什么可下载的 – 该脚本最有可能在最后通过电子邮件发送报告.