0

我有一个向这个 cgi 脚本提交数据的页面,然后这个脚本调用另一个可执行文件。问题是这个可执行文件需要很长时间才能运行,因此,它会导致 cgi 脚本暂停直到完成。我正在尝试找到一种在后台运行它的方法。我在linux机器上用python编码。我遇到的问题是当脚本结束时(父进程被杀死),子进程也被 init 终止(根据 linux 规范)。我用谷歌搜索了一下,我遇到了这个线程: Calling an external command in Python

然后我在我的代码中尝试了以下内容:

print <html code>
pid = subprocess.Popen([sys.executable, '/path/to/executable.py '+arg1],
                       stdout=subprocess.PIPE, stderr=subprocess.PIPE, 
                       stdin=subprocess.PIPE)
...
retval = pid.wait()
#For debugging purposes:
print str(retval) + "<br/>"
print </html code>

这给了我一个 '2' 的 retval,我确定这意味着有问题(因为我没有看到正确的输出)我尝试了一些其他方法,但它要么运行脚本并需要一段时间才能加载(意味着它是在前台运行),或者它只是无法一起运行脚本。

想法?谢谢你。哦,顺便说一句,我使用的是 python 2.6

4

1 回答 1

0

解决方案是在脚本完成之前生成一些输出。至于我,最好的方法是使用分块传输编码输出脚本执行日志。

通常,需要在输出开始之前完全生成 CGI 脚本输出。这是计算“Content-Length”标头所必需的。分块传输编码可以解决这个问题 - 您不需要知道对输出块的整个响应。

于 2012-06-26T20:23:29.680 回答