Tagebuch-Eintrag #57
Flask – Der DEBUG-Modus
Jetzt, wo Flask mich mit „Hallo Welt“ begrüßt und eine einfache Ausgabe klappt. Ist mir eine Sache dabei aufgefallen, was – nervt ist das falsche Wort – lästig ist.
Wenn ich beim üben und probieren den return-Wert ändere. Muss ich immer wieder die Flask-Anwendung beenden und neu starten und dann den die Seite im Browser neu laden. Letztere ist durchaus normal.
In der Dokumentation fand ich auch schnell die Lösung – nämlich der Debug-Modus. Nicht nur, dass es dazu da ist um Fehler-Quellen zu finden, der Debugger sorgt auch dafür, dass der lokale Server nach der Änderung automatisch neu gestartet wird. Das geschieht ein paar Sekunden, wenn man nichts mehr ändert. Dadurch brauche ich nur noch die Seite im Browser neu zu laden, damit ich die Änderungen sehen kann.
Flask-Debug aktivieren
Folge ich der Dokumentation von Flask aktivere ich die Entwicklungsumgebung mit
export FLASK_ENV=development
Danach starte ich die Flask-App wie gehabt mit
flask run
So ahnungslos wie ich derzeit bin, wusste ich erstmal nicht was ich genau tun sollte. Ich hatte einfach es so eingeben, wie oben beschrieben. Der Browser zeigte mir dann irgendwelche Daten an, mit dem ich auf dem ersten Blick nichts anfangen konnte – Man könnte sage, typisch Debug-Modus 😉

Aber beim genauen hinsehen, wurde klar. Ich habe keine FLASK_APP definiert und deswegen ist mein „Hello World“ nicht zu sehen. Die gleiche Debug-Meldung ist übrigens auch im Terminal vom VS Code zu sehen.
Flask-Debug-Modus richtig aktivieren
So, jetzt habe ich eben ungewollt doch noch das gesehen, was der Flask-Debugger macht. Auch gut zu wissen. Aber nun möchte ich den Flask-Debug-Modus dafür nutzen, wie ich es eigentlich dafür vorgesehen habe.
Statt der Entwicklungsumgebung, kann ich auch nur den Debug-Modus aktivieren. Laut Flask-Dokumentation heißt der Befehl:
FLASK_DEBUG=1
Und das ganze sieht dann so aus:
export FLASK_APP=hello.py
export FLASK_DEBUG=1
flask run
Die richtige Reihenfolge um den Flask-Debugger für die App zu aktiveren wäre zunächst einmal die py-Datei für die App zuzuweisen, danach erst den Debug-Modus aktivieren und als letzten Schritt die Anwendung mit flask run zu starten.

Es ist auch möglich die zwei export-Befehle in einer Zeile mit einem Semikolon getrennt zu schreiben. Das sieht dann so aus:
export FLASK_APP=hello.py;FLASK_DEBUG=1
flask run

Wenn ich nun etwas ändere. Zum Beispiel von Hello World in Hello Jing, dann erkennt der Flask-Debugger die Änderung und startet die Entwicklungsumgebung neu und ich brauche nur noch die Seite im Browser neu zu laden.

Das spart auf jedenfall einiges an Tipperei im Terminal 😉
Wie der Debug-Modus bei größeren Projekten arbeitet und die Performance ist, insbesondere bei ’ständigen‘ Änderungen der Daten, muss ich noch sehen.
Für die ersten Schritte lasse ich es aktiviert.