Una forma realmente fácil es CGI (junto con un servidor web normal, y usando wsgiref.handlers.CGIHandler
). Terrible para el rendimiento en un servidor de producción, pero excelente para el desarrollo. Puede escribir un único script que funcione como un mod_wsgi WSGIScriptAlias (exponiendo un objeto application
), y como un mod_cgi ScriptAlias (llamando al wsgiref
cuando __name__=='__main__'
).
Muchos entornos WSGI tienen una forma de volver a cargar el script básico, por ejemplo, WSGIScriptReloading
de mod_wsgi, que está activado por defecto. Desafortunadamente, es probable que coloques gran parte de tu código en módulos, lo que no es tan fácil de volver a cargar. En mod_wsgi también puede hacerlo enviando un SIGINT para realizar una recarga cuando esté en modo daemon. Lamentablemente, todavía tiene que olfatear cada módulo que está utilizando para las actualizaciones de mtime para saber si debe volver a cargar. Y no funciona en modo incrustado.
Un enfoque desordenado pero factible es olfatear todos los módulos que son parte de su aplicación, y si alguno se ha actualizado desde la última comprobación, vuelva a cargarlos todos.Tienes que volver a cargarlos de una vez, quitándolos todos de la búsqueda sys.modules
(elimina también las entradas de valor None
mientras estás allí, para evitar problemas relativos de búsqueda de importación), para garantizar que no mantengan referencias cruzadas las versiones antiguas de ellos mismos. Y, por supuesto, no deben dejar otras referencias a sí mismos fuera de su aplicación. Puede ver un ejemplo de esto en acción en la clase ModuleUpdater
here.
(Este software no está listo para su lanzamiento, pero ha estado proporcionando recarga de módulos para mis aplicaciones WSGI desde hace unos años y parece ser estable. La idea es poner toda su aplicación WSGI en una clase de aplicación en un paquete , que se puede importar desde un único/script punto de entrada WSGI/CGI de línea de comandos; se incluye la configuración de despliegue en ese guión)
Apache no tiene la sobrecarga que muchos afirman tener. Si lo configura y lo usa correctamente, lo que la mayoría de las personas no hace, entonces no es tan malo como las personas lo hacen. Desafortunadamente, las personas que no conocen nada siguen propagando este mito sobre Apache que está hinchado. :-( –
Graham, por favor no me malinterpreten. Realmente me gusta apache y (creo) soy bueno configurándolo. Estoy totalmente de acuerdo en que la mayoría de los que odian apache son personas que no saben cómo hacerlo. Sin embargo, mis intenciones aquí son totalmente diferentes. Quiero proporcionar a otros desarrolladores de mi equipo un archivo simple requirements.txt para ejecutarlos y luego implementarlo en mod_wsgi, de esta forma las personas no tienen que aprender y configurar su propia instancia de apache de desarrollo. –
Estoy buscando la misma solución que el OP. FWIW: mi problema con Apache es que no funciona bien con varios módulos importados, como Shapely. Quiero continuar el desarrollo de mi aplicación wsgi (con recarga) mientras solucione el problema de Apache por separado. –