Estoy investigando cómo desarrollar una aplicación web decente con Python. Como no quiero que algunas estructuras de alto orden se interpongan en mi camino, mi elección recayó en el peso ligero marco Flask . El tiempo dirá si esta fue la elección correcta.
Entonces, ahora he configurado un servidor Apache con mod_wsgi, y mi sitio de prueba está funcionando bien. Sin embargo, me gustaría acelerar la rutina de desarrollo haciendo que el sitio se recargue automáticamente ante cualquier cambio en los archivos de py o plantilla que realice. Veo que cualquier cambio en el archivo .wsgi del sitio provoca la recarga (incluso sin WSGIScriptReloading On en el archivo de configuración de apache), pero todavía tengo que presionarlo manualmente (es decir, insertar salto de línea adicional, guardar). ¿Hay alguna forma de provocar la recarga cuando edito algunos de los archivos py de la aplicación? ¿O se espera que use IDE que actualice el archivo .wsgi por mí?
flask run
también funciona, ya que cuando ustedpip install flask
, también se instala un archivo ejecutable de matraz en lavenv/bin/
carpeta.Si está hablando de entornos de prueba / desarrollo, simplemente use la opción de depuración. Se volverá a cargar automáticamente la aplicación del matraz cuando ocurra un cambio de código.
O, desde el caparazón:
http://flask.pocoo.org/docs/quickstart/#debug-mode
fuente
En entornos de prueba / desarrollo
El depurador werkzeug ya tiene disponible una función de 'recarga automática' que se puede habilitar mediante una de las siguientes acciones:
o
También puede usar un archivo de configuración separado para administrar toda su configuración si es necesario. Por ejemplo, uso 'settings.py' con una opción 'DEBUG = True'. Importar este archivo también es fácil;
Sin embargo, esto no es adecuado para un entorno de producción.
Entorno de producción
Personalmente, elegí Nginx + uWSGI sobre Apache + mod_wsgi por algunas razones de rendimiento, pero también por las opciones de configuración. La recarga táctil opción de permite especificar un archivo / carpeta que hará que la aplicación uWSGI vuelva a cargar su aplicación de matraz recién implementada.
Por ejemplo, su script de actualización extrae sus cambios más recientes y toca el archivo 'reload_me.txt'. Su script ini uWSGI (que es supervisado por Supervisord, obviamente) tiene esta línea en alguna parte:
¡Espero que esto ayude!
fuente
.ini
archivo de configuración uwsgi separado . Si lee la documentación sobre "recarga táctil" está en la configuración de uWSGI, no de supervisor.app.run(debug=True)
falla, pero la configuración de la variable ambiental funciona.Si está utilizando uwsgi, mire la opción de recarga automática de python:
Ejemplo uwsgi-dev-example.ini:
raíz_sitio / __ init__.py
Entonces corre:
Nota: Este ejemplo también habilita el depurador.
Seguí esta ruta para imitar la producción lo más cerca posible con mi configuración nginx. Simplemente ejecutando la aplicación de matraz con su servidor web integrado detrás de nginx, se produciría un error de puerta de enlace incorrecto.
fuente
Algunas actualizaciones para Flask 1.0 y superior
El enfoque básico para la recarga en caliente es:
FLASK_ENV=development
(noFLASK_DEBUG=1
)flask run --debugger
solo para asegurarte de que esté encendidoFLASK_APP
yFLASK_ENV
si tiene un.env
archivo en el directorio raíz del proyecto y tener instalado Python-dotenvfuente
export FLASK_ENV=development
trabajó para mi.app.run(debug=True)
no parece funcionarTengo una idea diferente:
Primero:
Instale el
python-dotenv
módulo, que leerá las preferencias locales para el entorno de su proyecto.Segundo:
Agregue el
.flaskenv
archivo en su directorio de proyecto. Agregue el siguiente código:¡Está hecho!
Con esta configuración para su proyecto Flask, cuando ejecute
flask run
y verá esta salida en su terminal:Y cuando edite su archivo, simplemente guarde el cambio. Verás que la recarga automática está ahí para ti:
Con más explicaciones:
Por supuesto, puedes golpear manualmente
export FLASK_ENV=development
cada vez que lo necesites. Pero usar un archivo de configuración diferente para manejar el entorno de trabajo real parece una mejor solución, por lo que recomiendo este método que uso.fuente
FLASK_APP
variable en el.flaskenv
archivo.Las aplicaciones de matraz se pueden ejecutar opcionalmente en modo de depuración. En este modo, dos módulos muy convenientes del servidor de desarrollo llamados el cargador y el depurador están habilitados por defecto. Cuando el recargador está habilitado, Flask observa todos los archivos de código fuente de su proyecto y reinicia automáticamente el servidor cuando se modifica alguno de los archivos.
Por defecto, el modo de depuración está deshabilitado. Para habilitarlo, establezca una
FLASK_DEBUG=1
variable de entorno antes de invocar el matrazrun
:Tener un servidor que se ejecuta con el recargador habilitado es extremadamente útil durante el desarrollo, porque cada vez que modifica y guarda un archivo fuente, el servidor se reinicia automáticamente y recoge el cambio.
fuente
Para lograr esto en PyCharm, establezca la sección 'Variables de entorno' en:
Para las configuraciones de ejecución / depuración del matraz.
fuente
$ env: Flask_ENV = "MyAPP.py"
$ env: Flask_ENV = "desarrollo"
matraz
Debe ser trabajado
fuente