Подпроцесс Python. Открыть медленно под UWSGI - PullRequest
4 голосов
/ 27 февраля 2011

Я настроил сервер разработки под управлением Cherokee на Fedora 14, используя uWSGI для взаимодействия с моим приложением WSGI.

Когда приложение получает первый запрос, я запускаю такой процесс:1003 *

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

Первый запрос занимает 10-15 секунд (последующие - менее секунды).Без создания объекта Popen первый запрос занимает всего 2-3 секунды.Когда я выполняю тот же запрос Popen из оболочки Python, он происходит мгновенно.

Что может быть причиной такого поведения?Я что-то упустил очевидное?

Ответы [ 2 ]

11 голосов
/ 27 февраля 2011

--close-on-exec

В противном случае ваш новый процесс унаследует сокет

(это стандартное поведение UNIX)

3 голосов
/ 23 сентября 2011

Если вы предпочитаете обрабатывать это в своем коде Python, у вас есть возможность передать close_fds = True в Popen () , тогда любые сокеты не будут наследоваться разветвленным процессом.

...