Python subprocess.Popen slow under uWSGI

两盒软妹~` 提交于 2019-11-30 15:57:03

问题


I've set up a development server running Cherokee on Fedora 14, using uWSGI to interface with my WSGI application.

When the application is hit with the first request, I spawn a process like so:

from subprocess import Popen
Popen(['bash'])  # bash is just an example; the problem happens with all programs

The first request takes 10-15 seconds to complete (subsequent ones take less than a second). Without the creation of the Popen object, the first request only takes about 2-3 seconds to complete. When I execute the same Popen request from a Python shell, it's instantaneous.

What could be causing this behaviour? Have I missed something obvious?


回答1:


--close-on-exec

Otherwise your new process will inherit the socket

(this is a UNIX standard behaviour)




回答2:


If you prefer to handle this in your python code, you have the option to pass close_fds=True to Popen() then any sockets will not be inherited by the forked process.



来源:https://stackoverflow.com/questions/5131700/python-subprocess-popen-slow-under-uwsgi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!