2011-12-13 9 views
8

Sto sperando che qualcuno ha visto questo -esecuzione subprocess.Popen sotto Apache + mod_wsgi è sempre restituisce un errore con un codice di ritorno di -6

sto correndo django-compressore, approfittando della messa a punto per rendere lessc/comprimi meno in CSS sul file. Funziona perfettamente quando viene richiamato dal server di sviluppo, ma quando viene eseguito sotto apache + mod_wsgi restituisce costantemente un errore.

Per eseguire il debug di questo, ho eseguito il comando esatto che il filtro sta invocando come utente di dati www (che è definito come utente wsgi nella direttiva WSGIDaemonProcess) e verificato che funzioni correttamente, incluse le autorizzazioni per leggere e scrivi i file che sta manipolando.

Ho anche hackerato il codice del compressore django in compressor/filters/base.py su quel sistema, e sembra che QUALSIASI comando che tenta di essere richiamato stia ottenendo un returncode di -6 dopo il proc.communicate() invocazione.

Spero che qualcuno l'abbia già visto prima o che suoni un campanello. Funziona bene su questa macchina al di fuori del processo apache + mod_wsgi (ad esempio eseguendo il processo come server di sviluppo). Non sono chiaro su cosa potrebbe bloccare le chiamate di subprocess.Popen().

+0

La macchina esegue SELinux per caso? Se, poi vedi se funziona dopo averlo disabilitato temporaneamente. –

+0

Ho lo stesso problema con Python 2.7.2 su SELinux. Python 2.5 funziona bene qui. Sei riuscito a risolvere il problema? – Pankrat

risposta

8

Stai usando Python 2.7.2 per caso?

Quella versione di Python ha introdotto un bug che causano fork() in interpreti secondari a fallire:

http://bugs.python.org/issue13156

si dovrà imporre l'applicazione WSGI per l'esecuzione in principale interprete Python del processo impostando:

WSGIApplicationGroup %{GLOBAL} 

Se l'esecuzione di più applicazioni Django è necessario per garantire che solo quella interessata ha questa direttiva di configurazione applicata ad esso altrimenti si causerebbe tutte le applicazioni Django per l'esecuzione in un interprete whic h non è possibile a causa di come funziona la configurazione di Django.

+0

Ho appena ricompilato Python 2.7.2 e mod_wsgi con la patch di issue13156 applicata e ha risolto il problema. Molte grazie, Graham! – Pankrat

Problemi correlati