[英]Python subprocess.Popen() with Pygame , how to tell Pygame wait untill subprocess is done
[英]Subprocess.Popen wait untill the child finish
我正在开发基于CGI,Apache2,python(2.76)的网络工具。 Web服务器在Ubuntu虚拟机上。 用户提交作业后,我希望服务器立即返回网页,显示指向即将发布的结果的链接。 因为计算将花费一些时间,所以我使用Subprocess.Popen来调用一个函数,该函数可以完成所有计算。 下面显示了我的代码流程。 我在自己的(Mac)计算机上进行了测试,它可以在计算完成之前立即返回一个网页。 但是在Ubuntu虚拟机上,它将返回页面,直到计算完成。 Subprocess.Popen在Ubuntu上不起作用吗?
Main()
preprocess
return_a_wen_page
Subprocess.Popen(function_do_calculation)
subprocess.Popen
可在Ubuntu上使用。 问题可能是您从Apache调用它。 您可以尝试重定向标准流:
with open(os.devnull, 'r+b', 0) as DEVNULL:
subprocess.Popen(cmd, stdin=DEVNULL, stdout=DEVNULL, stderr=DEVNULL,
close_fds=True)
如果没有帮助,还添加preexec_fn=os.setsid
( start_new_session=True
模拟)。 或者只是发送一条消息((unix)套接字,命名管道)到可以在其上调用subprocess.Popen
进程的计算机上独立运行的守护进程。请自由打开而不是cgi脚本(请考虑是否像celery
这样的东西可以为您简化它)。
这是我第一次做Web应用程序,我不知道mod_wsgi。
with open(os.devnull, 'r+b', 0) as DEVNULL:
subprocess.Popen(cmd, stdin=DEVNULL, stdout=DEVNULL, stderr=DEVNULL,close_fds=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.