Reiniciando una aplicación Django ejecutándose en Apache + mod_python

Estoy ejecutando una aplicación Django en Apache + mod_python. Cuando hago algunos cambios en el código, a veces tienen efecto inmediatamente, otras veces no, hasta que reinicio Apache. Sin embargo, no quiero hacerlo porque es un servidor de producción que también ejecuta otras cosas. ¿Hay alguna otra manera de forzar eso?

Solo para dejarlo claro, ya que veo que algunas personas se equivocan, estoy hablando de un entorno de producción . Para el desarrollo, estoy usando el servidor de desarrollo de Django, por supuesto.

Si es posible, debes cambiar a mod_wsgi. Esta es ahora la forma recomendada de servir a Django de todos modos, y es mucho más eficiente en términos de recursos de memoria y servidor.

En mod_wsgi, cada sitio tiene asociado un archivo .wsgi . Para reiniciar un sitio, solo touch el archivo relevante, y solo ese código será recargado.

Como otros han sugerido, use mod_wsgi en su lugar. Para obtener la capacidad de recarga automática, al tocar el archivo de script WSGI o a través de un monitor que busca cambios en el código, debe usar el modo daemon en UNIX. Se puede usar un poco de mano para lograr lo mismo en Windows cuando se usa el modo integrado. Todos los detalles se pueden encontrar en:

http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

Puede reducir el número de conexiones a 1 configurando “MaxRequestsPerChild 1” en su archivo httpd.conf. Pero hazlo solo en el servidor de prueba, no en la producción.

o

Si no desea eliminar las conexiones existentes y aún reiniciar Apache, puede reiniciarlo “con gracia” ejecutando “apache2ctl con gracia”: todas las conexiones existentes podrán completarse.

Utilice un servidor de prueba incluido en Django. (como ./manage.py runserver 0.0.0.0:8080 ) Hará la mayoría de las cosas que necesitaría durante el desarrollo. El único inconveniente es que no puede manejar solicitudes simultáneas con subprocesos múltiples.

He escuchado que hay un truco para establecer las instancias máximas de Apache en 1 para que cada cambio de código se refleje de inmediato, pero como dijo que está ejecutando otros servicios, puede que este no sea su caso.