我有一个工具,我在工作,我需要它来运行一个分析器,并输出另一个分析日志。 目前,我有它,以便它是通过一个网络接口。
- 用户进入的形式和(已在文件系统)提交的文件名解析。
- 表单提交信息到Python CGI脚本
- Python的CGI脚本运行,并产生一个子进程来运行分析。
- 分析器找到分析适当的信息,并产生子也。
我在用
import subprocess
...
subprocess.Popen(["./program.py", input])
在我的代码,我从文档,我们没有在子进程等待终止假设,我们只是不停地运行该脚本。 我的CGI脚本启动所有这样做:
subprocess.Popen(["./program.py", input])
// HTML generation code
// Javascript to refresh after 1 second to a different page
在HTML代码生成的输出只是我们处理的请求,然后JavaScript的刷新页面到主主页的状态。
问题
该CGI页面挂起,直到子进程完成,这是不是我想要的。 我想POPEN不等待子进程结束,但每当我运行此工具,它停止,直到它完成。 我希望脚本来完成,让在后台运行的子流程,让网页仍然正常工作,而用户想一切都只是加载信号停滞不前。
我似乎找不到任何理由POPEN会做到这一点,因为我到处看它说,它不会等待,但它似乎。
奇怪的东西也就是Apache日志显示:“请求体读取超时”的剧本完成之前也是如此。 就是Apache实际上拖延脚本呢?
对不起,我不能显示完整的代码,因为它是“机密”,但希望的逻辑是存在的理解。