¿Cómo ejecutar una aplicación de matraz?

Resuelto KarateKid asked hace 9 años • 7 respuestas

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?

KarateKid avatar Apr 27 '15 02:04 KarateKid
Aceptado

El flaskcomando es una CLI para interactuar con aplicaciones Flask. Los documentos describen cómo usar los comandos CLI y agregar comandos personalizados. El flask runcomando 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 --appopció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 --debugopció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_APPy en su lugar. y aún se puede utilizar en lugar de las opciones CLI anteriores.FLASK_ENV=developmentFLASK_APPFLASK_DEBUG=1

$ export FLASK_APP=sample
$ export FLASK_ENV=development
$ flask run

En Windows CMD, utilice seten lugar de export.

> set FLASK_APP=sample

Para PowerShell, utilice $env:.

> $env:FLASK_APP = "sample"

El python sample.pycomando 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 runcomando en lugar del app.run().

davidism avatar Apr 26 '2015 20:04 davidism

La documentación más reciente tiene el siguiente ejemplo, suponiendo que desee ejecutar hello.py(el uso .pyde la extensión de archivo es opcional):

Unix, Linux, macOS, etc.:

$ export FLASK_APP=hello
$ flask run

Ventanas:

> set FLASK_APP=hello
> flask run
Caner avatar Aug 07 '2019 18:08 Caner