¿Cómo ejecutar una aplicación de matraz?
Quiero saber la forma correcta de iniciar una aplicación de matraz. Los documentos muestran dos comandos diferentes:
$ flask -a sample run
y
$ python3.4 sample.py
produzca el mismo resultado y ejecute la aplicación correctamente.
¿Cuál es la diferencia entre los dos y cuál debería usarse para ejecutar una aplicación Flask?
El flask
comando es una CLI para interactuar con aplicaciones Flask. Los documentos describen cómo usar los comandos CLI y agregar comandos personalizados. El flask run
comando es la forma preferida de iniciar el servidor de desarrollo.
Nunca use este comando para implementar públicamente, use un servidor WSGI de producción como Gunicorn, uWSGI, Waitress o mod_wsgi.
A partir de Flask 2.2, use la --app
opción para apuntar el comando a su aplicación. Puede apuntar a un nombre de importación o de archivo. Detectará automáticamente una instancia de aplicación o una fábrica de aplicaciones llamada create_app
. Utilice la --debug
opción para ejecutar en modo de depuración con el depurador y el recargador.
$ flask --app sample --debug run
Antes de Flask 2.2, se usaban las variables de entorno FLASK_APP
y en su lugar. y aún se puede utilizar en lugar de las opciones CLI anteriores.FLASK_ENV=development
FLASK_APP
FLASK_DEBUG=1
$ export FLASK_APP=sample
$ export FLASK_ENV=development
$ flask run
En Windows CMD, utilice set
en lugar de export
.
> set FLASK_APP=sample
Para PowerShell, utilice $env:
.
> $env:FLASK_APP = "sample"
El python sample.py
comando ejecuta un archivo Python y establece __name__ == "__main__"
. Si el bloque principal llama app.run()
, ejecutará el servidor de desarrollo. Si utiliza una fábrica de aplicaciones, también puede crear una instancia de una aplicación en este punto.
if __name__ == "__main__":
app = create_app()
app.run(debug=True)
En última instancia, ambos comandos inician el servidor de desarrollo Werkzeug , que como su nombre lo indica inicia un servidor HTTP simple que solo debe usarse durante el desarrollo. Deberías preferir usar el flask run
comando en lugar del app.run()
.
La documentación más reciente tiene el siguiente ejemplo, suponiendo que desee ejecutar hello.py
(el uso .py
de la extensión de archivo es opcional):
Unix, Linux, macOS, etc.:
$ export FLASK_APP=hello
$ flask run
Ventanas:
> set FLASK_APP=hello
> flask run