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?
95
3
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 kommandoenflask run
(husk å pekeFLASK_APP
til appen din også).For Linux, Mac, Linux Subsystem for Windows, Git Bash på Windows osv:
For Windows CMD, bruk
set
i stedet for export:For PowerShell bruker du
$env
:Før Flask 1.0 ble dette i stedet styrt av miljøvariabelen
FLASK_DEBUG=1
.Hvis du bruker
app.run()
-metoden i stedet forflask run
-kommandoen, må du angidebug=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å skriptetvenv/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.Du kan bruke
app.run(debug=True)
for Werkzeug Debugger edit som nevnt nedenfor, og det burde jeg ha visst.Fra
0.11
-dokumentasjonen kan du aktivere feilsøkingsmodus ved å eksportere en miljøvariabel: