2011-12-13 10 views
8

Mam nadzieję, że ktoś to widział -działa subprocess.Popen pod apache + mod_wsgi zawsze zwraca błąd z returnCode -6

biegnę Django sprężarkę, korzystając z ustawień lessc renderowanie/skompresuj mniej w CSS na pliku. Działa doskonale po wywołaniu z serwera programistycznego, ale po uruchomieniu pod apache + mod_wsgi konsekwentnie zwraca błąd.

Aby przeprowadzić debugowanie, uruchomiłem dokładnie polecenie, które filtr wywołuje jako użytkownik danych www (który jest zdefiniowany jako użytkownik wsgi w dyrektywie WSGIDaemonProcess) i zweryfikuje, że działa poprawnie, w tym uprawnienia do odczytu i napisz pliki, którymi manipuluje.

Zhakowałem również kod django-compressor w kompresorze/filters/base.py na tym systemie i wydaje się, że każda komenda, która próbuje się wywołać, otrzymuje kod powrotu -6 po proc.communicate() wezwanie.

Mam nadzieję, że ktoś to widział wcześniej lub że dzwoni jakaś dzwonka. Działa to dobrze na tej maszynie poza procesem apache + mod_wsgi (to znaczy działa również jako serwer dev). Po prostu nie wiem, co może blokować wywołania podprocesu.Popen().

+0

Czy maszyna działa przy użyciu SELinux? Jeśli, to sprawdź, czy działa po tymczasowym wyłączeniu go. –

+0

Mam taki sam problem z Pythonem 2.7.2 na SELinux. Python 2.5 działa tutaj dobrze. Czy byłeś w stanie rozwiązać problem? – Pankrat

Odpowiedz

8

Czy używasz Pythona 2.7.2 przez przypadek?

To wersja Pythona wprowadziła błąd, który spowoduje fork() w tym w poszczególnych tłumaczy niepowodzenie:

http://bugs.python.org/issue13156

trzeba będzie zmusić aplikację WSGI uruchomić w głównym interpreter Pythona procesu poprzez ustawienie:

WSGIApplicationGroup %{GLOBAL} 

przypadku używania wielu aplikacji Django musisz upewnić się, że tylko jeden ma wpływ na tę dyrektywę konfiguracji zastosowany do niej indziej można wywołać wszystkie aplikacje Django uruchomić w jednym tłumacza whic h nie jest możliwe ze względu na sposób działania konfiguracji Django.

+0

Właśnie zrekompilowano Python 2.7.2 i mod_wsgi z zainstalowaną łatką issue13156 i naprawiono problem. Wielkie dzięki, Graham! – Pankrat