2011-02-03 24 views
6

Después de configurar un sitio django y ejecutarlo en el servidor de desarrollo, finalmente me he dado cuenta de cómo implementarlo en un entorno de producción utilizando el mod_wsgi/apache22 recomendado. Actualmente estoy limitado a implementar esto en una máquina con Windows XP.Django + Apache + Windows WSGIDaemonProcess Alternativa

Mi problema es que varias vistas django que he escrito utilizan el módulo python subprocess para ejecutar programas en el sistema de archivos. Sigo recibiendo errores al ejecutar el subprocess.Popen. He visto varias preguntas sobre SO que me han preguntado sobre esto, y la respuesta aceptada es usar WSGIDaemonProcess para manejar el problema (debido a los permisos del usuario de apache, creo).

El único problema con esto es que WSGIDaemonProcess no está disponible para mod_wsgi en Windows. ¿Hay alguna forma de que pueda usar mod_wsgi/apache/windows/subprocess juntos?

+0

http://stackoverflow.com/questions/3703794/django-app-stops-working-when-deployed-on-apache-subprocess-runs-but-fails parece ser la misma pregunta, sin respuesta . – Randy

+3

"Sigo recibiendo errores" Demasiado vago para ayudarnos. ¿Qué errores, específicamente? Por favor, publique un fragmento corto de código y el error real. –

+0

Resuelto. Encontré una máquina Linux donde WSGIDaemonProcess está disponible. – Randy

Respuesta

1

No es una buena idea abrir subprocesos desde dentro de mod_wsgi, de todos modos.

Una alternativa (y una común) es usar mod_proxy en el lado de apache y reenviar solicitudes desde apache a un servidor WSGI que ejecuta Django. Esto tiene la ventaja de sacar el (los) hilo (s) de python del espacio de memoria de Apache. Hay docenas de opciones para wsgi servers; tornado y gunicornio son dos opciones populares, y gunicornio se integra * con Django.

* por integrar Solo me refiero a que proporciona un comando manage.py si lo agrega a INSTALLED_APPS.

1

Me encontré con un par de problemas al tratar de utilizar el subproceso en esta configuración. Ya que no estoy seguro de qué específicamente tuvo problemas, puedo compartir un par de cosas que no me resultaron fáciles de resolver, pero que en retrospectiva parecen bastante triviales.

  1. Estaba recibiendo permisos de errores relacionados al intentar ejecutar una aplicación. Busqué bastante, pero estaba teniendo dificultades para encontrar respuestas específicas de Windows. Este era obvio: cambié el usuario bajo el cual Apache ejecuta a un usuario con permisos más altos. (Tenga en cuenta que existen implicaciones de seguridad con eso, por lo que debe asegurarse de comprender a qué se dirige).
  2. Django (según su configuración) puede almacenar cadenas como Unicode. Tenía una aplicación de línea de comandos que estaba tratando de ejecutar con algunos parámetros de mi vista que se colgaba a pesar de tener los argumentos correctos ingresados. Después de un par de horas de frustración hice un tipo (args) que devolvió <type 'unicode'> en lugar de mi cadena esperada. Una conversión rápida resolvió ese problema.
Cuestiones relacionadas