我在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请求时,它是即时的。
可能导致此行为的原因是什么?我错过了一些明显的东西吗?
答案 0 :(得分:11)
答案 1 :(得分:3)
如果您希望在python代码中处理此问题,则可以选择将close_fds = True传递给Popen(),然后分叉进程不会继承任何套接字。