Python subprocess.Popen在uWSGI下运行缓慢

时间:2011-02-27 05:55:28

标签: python performance popen uwsgi

我在Fedora 14上设置了一个运行Cherokee的开发服务器,使用uWSGI与我的WSGI应用程序进行交互。

当第一个请求命中应用程序时,我会生成一个类似的进程:

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请求时,它是即时的。

可能导致此行为的原因是什么?我错过了一些明显的东西吗?

2 个答案:

答案 0 :(得分:11)

--close-on-exec

否则您的新进程将继承套接字

(这是UNIX标准行为)

答案 1 :(得分:3)

如果您希望在python代码中处理此问题,则可以选择将close_fds = True传递给Popen(),然后分叉进程不会继承任何套接字。