запуск подпроцесса.Popen под apache + mod wsgi всегда возвращает ошибку с кодом возврата -6

Я надеюсь, что кто-то видел это -

Я запускаю django-compressor, используя настройку lessc для рендеринга / сжатия меньше в CSS в файле. Он отлично работает при вызове с сервера разработки, но при запуске под apache+mod_wsgi он последовательно возвращает ошибку.

чтобы отладить это, я выполнил точную команду, которую фильтр вызывает как пользователь www-data (который определен как пользователь wsgi в WSGIDaemonProcess директива) и проверил, что он работает правильно, включая разрешения на чтение и запись файлов, которыми он управляет.

Я также взломал код django-compressor в compressor/filters/base.py в этой системе, и кажется, что любая команда, пытающаяся получить вызов, получает код возврата -6 после proc.communicate () invocation.

Я надеюсь, что кто-то видел это раньше - или что это звонит какая-то искорка. Он работает отлично на этой машине вне apache + mod_wsgi процесс (т. е. запуск процесса в качестве dev-сервера), а также. Я просто не понимаю, что может блокировать подпроцесс.Popen () invocations.

1 ответов


вы случайно используете Python 2.7.2?

эта версия Python представила ошибку, которая вызывает сбой fork () в sub интерпретаторах:

http://bugs.python.org/issue13156

вам придется заставить приложение WSGI работать в основном интерпретаторе Python процесса, установив:

WSGIApplicationGroup %{GLOBAL}

при запуске нескольких приложений Django необходимо убедиться, что только один затронутый имеет эту директиву конфигурации применяется к нему иначе вы заставите все приложения Django работать в одном интерпретаторе, что невозможно из-за того, как работает конфигурация Django.