我已经建立了一个运行在Fedora 14上的切诺基开发服务器,使用uWSGI与我的WSGI应用程序接口。python subprocess.Popen慢下uWSGI
当应用程序被击中与第一请求,我生成一个进程像这样:
from subprocess import Popen
Popen(['bash']) # bash is just an example; the problem happens with all programs
第一请求需要10-15秒来完成(后续者采取少于一秒钟)。 没有创建Popen对象,第一个请求只需要大约2-3秒即可完成。当我从Python shell执行相同的Popen请求时,它是即时的。
什么可能导致此行为?我错过了明显的东西吗?
你能解释一下吗? “继承套接字”是什么意思? (我是这个东西的新手) – Cameron 2011-02-27 06:14:10
刚刚尝试在我的uWSGI XML配置文件中添加' '并解决了问题。非常感谢!这似乎是uWSGI的一个未公开的选项 - 但我无法在[docs](http://projects.unbit.it/uwsgi/wiki/Doc)中找到它。它很快就会被添加的任何机会? –
Cameron
2011-02-27 06:20:17
http://en.wikipedia.org/wiki/Fork_%28operating_system%29在unix中,每当你产生一个新的进程时,它将得到父进程打开的所有文件描述符。因此,当你在worker中调用Popen时,新进程将继承Web服务器套接字。在这种情况下,直到子流程结束才会关闭连接。 --close-on-exec是在uwsgi --help中报告的,但你是对的,它必须包含在web文档中 – roberto 2011-02-27 06:33:40