Подпроцесс Pythons с WSGI + Apache mpm-worker: IOError 4 - PullRequest
1 голос
/ 30 декабря 2011

У меня странная проблема, решение которой я не могу найти, выполнив поиск в сети: /

После переключения Apache с mpm-prefork на mpm-worker, используя подпроцесс в моем (Django) Python WSGIПриложение вызывает следующее исключение после зависания в течение пары раз:

IOError at /
[Errno 4] Interrupted system call

Рассматриваемый вызов:

out = check_output(['sudo', 'quota', user_id])

, где check_output является обратным портом этой функции из Python 2.7, в то время как яЯ использую Python 2.6 из репозиториев Debian Squeeze.

Процессы, по-видимому, выполняются, но умирают:

ps aux | grep quota
root     15378  0.0  0.0  21864  1176 ?        S    02:34   0:00 sudo quota ...SOME_ID...
root     15379  0.0  0.0      0     0 ?        Z    02:34   0:00 [quota] <defunct>

Конфигурация Apache не более, чем установка WSGIScriptAlias ​​инекоторые директивные директивы.

Я упускаю очевидное?

Приветствую Себастьяна

Решение: Оказалось, ошибка в sudo 1.7.4-4 поставляется с Debian 6.Решено путем установки последней версии 1.8.x .deb с их домашней страницы.

1 Ответ

0 голосов
/ 31 декабря 2011

В Python 2.7.2 есть ошибка, которая приводит к сбою fork в субинтерпретаторах.Попробуйте установить:

WSGIApplicationGroup %{GLOBAL}

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

Отчет об ошибках Python для основных проблем:

http://bugs.python.org/issue13156

...