2011-11-29 20 views
9

Mi aplicación Django que se utiliza para hacer algunos comandos shell usando pitón subprocess.Popen ya no funciona desde que migrar a Ubuntu 11.10 a¿Popen ya no funciona con apache/wsgi y python 2.7.2?

Para simplificar el problema, puse el código defectuoso en el guión 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() 

Si funciono el código directamente por pitón, funciona:

$ python -V 
Python 2.7.2+ 
$ python django_wsgi.py 
('uid=1002(www) gid=1002(www) groups=1002(www)\n', '') 0 

Si me quedo este código por Apache (que sólo hay que poner la URL correspondiente en un navegador), en el registro de Apache, llegué :

[Tue Nov 29 11:34:38 2011] [error] ('', '') -6 

¿Qué es este error '-6' ???

El problema es que con mi servidor de desarrollo (Ubuntu 10.04, casi la misma versión de Apache/wsgi, mismo archivo de configuración de Apache, mismas variables de entorno, pero con Python 2.6.5) funciona así:

[Tue Nov 29 11:29:10 2011] [error] ('uid=1000(www) gid=1000(www) groups=1000(www)\\n', '') 0 

¿Sabes por qué Popen ya no funciona con apache con python 2.7?

Respuesta

16

Porque la última versión de Python 2.7 tiene un error que hace que falle la ejecución de la bifurcación en los subinterpretes.

http://bugs.python.org/issue13156

Suponiendo que sólo se aloja la sola aplicación WSGI, el uso de la fuerza de la intérprete principal en vez de un intérprete de sub añadiendo a la configuración de Apache:

WSGIApplicationGroup %{GLOBAL} 
+0

de verdad muchas gracias mucho, me he quedado atrapado y tu respuesta resolvió mi problema :) – Eric

+1

¡Necesitas un botón +10 para esta respuesta! –

+0

¿Hay alguna solución para aquellos de nosotros en 2.7.2? – BrainCore

Cuestiones relacionadas