Solución:
La forma recomendada actual es con el flask
utilidad de línea de comandos.
https://flask.palletsprojects.com/en/1.1.x/quickstart/#debug-mode
Ejemplo:
$ export FLASK_APP=main.py
$ export FLASK_ENV=development
$ flask run
o en un comando:
$ FLASK_APP=main.py FLASK_ENV=development flask run
Si desea un puerto diferente al predeterminado (5000
) agregar --port
opción.
Ejemplo:
$ FLASK_APP=main.py FLASK_ENV=development flask run --port 8080
Hay más opciones disponibles con:
$ flask run --help
FLASK_APP
también se puede configurar en module:app
o module:create_app
en lugar de module.py
. Consulte https://flask.palletsprojects.com/en/1.1.x/cli/#application-discovery para obtener una explicación completa.
Si está hablando de entornos de prueba / desarrollo, simplemente use la opción de depuración. Recargará automáticamente la aplicación del matraz cuando ocurra un cambio de código.
app.run(debug=True)
O, desde el caparazón:
$ export FLASK_DEBUG=1
$ flask run
http://flask.pocoo.org/docs/quickstart/#debug-mode
En entornos de prueba / desarrollo
El depurador werkzeug ya tiene una función de ‘recarga automática’ disponible que se puede habilitar realizando una de las siguientes acciones:
app.run(debug=True)
o
app.debug = True
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;
app.config.from_object('application.settings')
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 opción de recarga táctil le permite especificar un archivo / carpeta que hará que la aplicación uWSGI recargue su aplicación de matraz recién implementada.
Por ejemplo, su script de actualización extrae los cambios más recientes y toca el archivo ‘reload_me.txt’. Su script uWSGI ini (que Supervisord mantiene, obviamente) tiene esta línea en alguna parte:
touch-reload = '/opt/virtual_environments/application/reload_me.txt'
¡Espero que esto ayude!