2011-12-13 9 views
8

Estoy esperando que alguien ha visto esto -corriendo subprocess.Popen bajo Apache + mod_wsgi siempre devuelve un error con un código de retorno de -6

estoy corriendo django-compresor, aprovechando la configuración lessc para rendir/comprimir menos en CSS en el archivo. Funciona perfectamente cuando se invoca desde el servidor de desarrollo, pero cuando se ejecuta debajo de apache + mod_wsgi devuelve constantemente un error.

Para depurar esto, he ejecutado el comando exacto que el filtro está invocando como el usuario www-data (que se define como el usuario wsgi en la directiva WSGIDaemonProcess) y verificó que funciona correctamente, incluidos los permisos para leer y escribe los archivos que está manipulando.

También he pirateado el código django-compressor en compressor/filters/base.py en ese sistema, y ​​parece que CUALQUIER comando que intente ser invocado está obteniendo un código de retorno de -6 después de proc.communicate() invocación.

Espero que alguien haya visto esto antes, o que suene. Funciona bien en esta máquina fuera del proceso apache + mod_wsgi (es decir, ejecutando el proceso como un servidor de desarrollo) también. Simplemente no tengo claro qué podría estar bloqueando el subproceso. Invocaciones de Popen().

+0

¿La máquina ejecuta SELinux por casualidad? Si, entonces ve si funciona después de deshabilitarlo temporalmente. –

+0

Tengo el mismo problema con Python 2.7.2 en SELinux. Python 2.5 funciona bien aquí. ¿Pudo resolver el problema? – Pankrat

Respuesta

8

¿Está utilizando Python 2.7.2 por casualidad?

Esa versión de Python introdujo un error que causa tenedor() en intérpretes sub a fallar:

http://bugs.python.org/issue13156

que tendrá que forzar la aplicación WSGI para funcionar en intérprete de Python principal del proceso mediante el establecimiento de:

WSGIApplicationGroup %{GLOBAL} 

Si se ejecutan múltiples aplicaciones Django que necesita para asegurarse de que sólo el afectado tiene esta directiva de configuración que se le aplica más que le causará todas las aplicaciones Django se ejecuten en un intérprete whic h no es posible debido a cómo funciona la configuración de Django.

+0

Recipó Python 2.7.2 y mod_wsgi con el parche de issue13156 y solucionó el problema. Muchas gracias, Graham! – Pankrat

Cuestiones relacionadas