La siguiente solución está dirigida a los usuarios de Linux solamente, y ha sido probado para trabajar bajo servidor de Ubuntu 12.04.1
Para ejecutar WSGI en modo daemon, es necesario especificar WSGIProcessGroup
y WSGIDaemonProcess
directivas en el archivo de configuración de Apache , por ejemplo
WSGIProcessGroup my_wsgi_process
WSGIDaemonProcess my_wsgi_process threads=15
Más detalles están disponibles en http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives
Una ventaja adicional es la estabilidad adicional si está ejecutando varios sitios WSGI bajo el sam e servidor, potencialmente con directivas VirtualHost. Sin usar procesos de daemon, encontré dos sitios de Django en conflicto entre sí y apareciendo 500 Internal Server Error alternativamente.
En este punto, el servidor es de hecho ya la supervisión de su sitio WSGI para los cambios, a pesar de que sólo se ve el archivo que especifica usando WSGIScriptAlias
, como
WSGIScriptAlias//var/www/my_django_site/my_django_site/wsgi.py
Esto significa que se puede forzar el proceso demonio WSGI para volver a cargar cambiando la secuencia de comandos WSGI. Por supuesto, usted no tiene que cambiar su contenido, sino más bien,
$ touch /var/www/my_django_site/my_django_site/wsgi.py
haría el truco.
Al utilizar el método anterior, puede volver a cargar automáticamente un sitio WSGI en el entorno de producción sin reiniciar/recargar todo el servidor Apache o modificar su secuencia de comandos WSGI para realizar una supervisión de cambio de código no segura.
Esto es particularmente útil cuando tiene scripts de implementación automatizados y no desea reiniciar el servidor Apache en la implementación.
Durante el desarrollo, es posible utilizar un sistema de archivos cambios vigilante para invocar touch wsgi.py
cada vez que un módulo bajo los cambios en el sitio, por ejemplo, pywatch
Estaba leyendo eso ... pero no fue tan útil :( – Ian
Ian, ¿esto es porque estás en Windows o usando mod_wsgi en modo incrustado? Porque de lo contrario, esa página tiene algún código para el reinicio automático y funciona perfectamente. –
No, esto es en Linux. La recarga automática solo se aplica a la secuencia de comandos a la que se accede, no a los módulos a los que llama la secuencia de comandos. – Ian