Cómo depurar una aplicación Flask

¿Cómo se supone que se depuran los errores en Flask? ¿Imprimir en la consola? ¿Mensajes en la página? ¿O hay alguna opción más potente para averiguar lo que ocurre cuando algo va mal?

Ejecutar la aplicación en modo de desarrollo mostrará un rastreo interactivo y una consola en el navegador cuando haya un error. Para ejecutar en modo de desarrollo, establece la variable de entorno FLASK_ENV=development y luego utiliza el comando flask run (recuerda apuntar FLASK_APP a tu aplicación también).

Para Linux, Mac, Subsistema Linux para Windows, Git Bash en Windows, etc:

export FLASK_APP=myapp
export FLASK_ENV=development
flask run

Para el CMD de Windows, utilice set en lugar de exportar:

set FLASK_ENV=development

Para PowerShell, utilice $env:

$env:FLASK_ENV = "development"

Antes de Flask 1.0, esto era controlado por la variable de entorno FLASK_DEBUG=1.

Si utiliza el método app.run() en lugar del comando flask run, pase debug=True para activar el modo de depuración.

Las trazas también se imprimen en el terminal que ejecuta el servidor, independientemente del modo de desarrollo.

Si usas PyCharm, VS Code, etc., puedes aprovechar su depurador para recorrer el código con puntos de interrupción. La configuración de ejecución puede apuntar a un script llamando a app.run(debug=True, use_reloader=False), o apuntar al script venv/bin/flask y usarlo como lo harías desde la línea de comandos. Puedes dejar el recargador desactivado, pero una recarga matará el contexto de depuración y tendrás que volver a coger un punto de interrupción.

También puedes usar pdb, pudb, u otro depurador de terminal llamando a set_trace en la vista donde quieres empezar a depurar.


Asegúrese de no utilizar bloques de excepción demasiado amplios. Rodeando todo su código con un bloque "try... except..." silenciará el error que desea depurar. Es innecesario en general, ya que Flask ya manejará las excepciones mostrando el depurador o un error 500 e imprimiendo la traza en la consola.

Comentarios (0)

Puedes usar app.run(debug=True) para el Werkzeug Debugger edit como se menciona a continuación, y debería haberlo sabido.

Comentarios (4)

Desde la documentación de 0.11, puedes habilitar el modo de depuración exportando una variable de entorno:

export FLASK_APP=/daemon/api/views.py  # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Comentarios (1)