为需要30分钟执行的脚本创建Web界面
我写了一个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/htmlnn Processing ... <br />"
# the really long loop.
for currentRecord in csvRecords:
count = count + 1
print "On line " + str(count) + " <br />"
我假设浏览器会收到标题,并等待,因为它继续接收少量数据。但实际上似乎发生的事情是它根本没有收到任何数据,并且在给出带有大量行的CSV时会Error 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的界面可以在旅行时派上用场,或者例如从手机上派上用场。此外,实际上没有什么可下载的 - 该脚本最有可能在最后通过电子邮件发送报告。
没有找到相关结果
已邀请:
6 个回复
瞧叮
。如果处理完成(即在结果数据库表中找到唯一ID),则返回结果。如果没有完成,响应应该是一个表明这一点的代码。例如,自定义HTTP标头,HTTP状态响应,响应正文“PENDING”或类似标题。
闪票仇门韧
版萍层分
,因为在您编写页面缓冲区的数据之前,脚本还没有真正写入任何内容到网络服务器 - 这在超时之前不会发生。 但正如其他人建议的那样,解决这个问题的正确方法是在一个单独的线程/进程中进行处理,并向用户显示一个自动刷新的页面,该页面显示状态,带有进度条或其他一些奇特的视觉效果以保留它们从无聊。
疾桓
珊畴炮贩号
靛新比比催