Slik feilsøker du en Flask-app

Hvordan skal du feilsøke feil i Flask? Skrive ut til konsollen? Blinke meldinger til siden? Eller finnes det et kraftigere alternativ for å finne ut hva som skjer når noe går galt?

Hvis du kjører appen i utviklingsmodus, vises en interaktiv sporing og konsoll i nettleseren når det oppstår en feil. For å kjøre i utviklingsmodus setter du miljøvariabelen FLASK_ENV=development og bruker deretter kommandoen flask run (husk å peke FLASK_APP til appen din også).

For Linux, Mac, Linux Subsystem for Windows, Git Bash på Windows osv:

export FLASK_APP=myapp
export FLASK_ENV=development
flask run

For Windows CMD, bruk set i stedet for export:

set FLASK_ENV=development

For PowerShell bruker du $env:

$env:FLASK_ENV = "development"

Før Flask 1.0 ble dette i stedet styrt av miljøvariabelen FLASK_DEBUG=1.

Hvis du bruker app.run()-metoden i stedet for flask run-kommandoen, må du angi debug=True for å aktivere feilsøkingsmodus.

Tracebacks skrives også ut til terminalen som kjører serveren, uavhengig av utviklingsmodus.

Hvis du bruker PyCharm, VS Code eller lignende, kan du dra nytte av debuggeren for å gå gjennom koden med stoppunkter. Kjørekonfigurasjonen kan peke på et skript som kaller app.run(debug=True, use_reloader=False), eller du kan peke på skriptet venv/bin/flask og bruke det på samme måte som fra kommandolinjen. Du kan la reloaderen være deaktivert, men en reload vil drepe feilsøkingskonteksten, og du må sette et brytepunkt på nytt.

Du kan også bruke pdb, pudb eller en annen terminaldebugger ved å kalle set_trace i visningen der du vil starte feilsøkingen.


Pass på at du ikke bruker for brede unntaksblokker. Hvis du omgir all koden din med en catch-all try... except..., vil feilen du ønsker å feilsøke, forstumme. Det er generelt unødvendig, siden Flask allerede håndterer unntak ved å vise debuggeren eller en 500-feil og skrive ut sporingen til konsollen.

Kommentarer (0)

Du kan bruke app.run(debug=True) for Werkzeug Debugger edit som nevnt nedenfor, og det burde jeg ha visst.

Kommentarer (4)

Fra 0.11-dokumentasjonen kan du aktivere feilsøkingsmodus ved å eksportere en miljøvariabel:

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