Мое приложение django, которое использовало некоторые команды оболочки с помощью подпроцесса python. Больше не работает, так как я обновляюсь до ubuntu до 11.10
Чтобы упростить проблему, я вставил неисправный код в скрипт wsgi:
import os
import sys
from subprocess import Popen,PIPE
p=Popen(['/usr/bin/id'],stdout=PIPE,stderr=PIPE)
comm=p.communicate()
print comm,p.returncode
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Если я запускаю этот код напрямую через python, он работает:
$ python -V
Python 2.7.2+
$ python django_wsgi.py
('uid=1002(www) gid=1002(www) groups=1002(www)\n', '') 0
Если я запускаю этот код через apache (я просто помещаю соответствующий URL в браузер),в журнале apache я получил:
[Tue Nov 29 11:34:38 2011] [error] ('', '') -6
Что это за ошибка '-6' ???
Проблема в том, что с моим сервером разработки (Ubuntu 10.04, почти такой же apacheВерсия / wsgi, тот же файл конфигурации apache, те же переменные окружения, но с python 2.6.5) работает хорошо:
[Tue Nov 29 11:29:10 2011] [error] ('uid=1000(www) gid=1000(www) groups=1000(www)\\n', '') 0
Знаете ли вы, почему Popen больше не работает через apache с python 2.7?