Wie sollen Sie Fehler in Flask debuggen? Auf die Konsole drucken? Flash-Nachrichten zur Seite? Oder gibt es eine leistungsfähigere Option, um herauszufinden, was passiert, wenn etwas schief geht?
Wenn Sie die App im Entwicklungsmodus ausführen, wird im Browser ein interaktives Traceback und eine Konsole angezeigt, wenn ein Fehler auftritt. Legen Sie für die Ausführung im Entwicklungsmodus die Umgebungsvariable FLASK_ENV=development
fest, und verwenden Sie dann den Befehl flask run
(denken Sie daran, auch FLASK_APP
auf Ihre App zu verweisen).
Für Linux, Mac, Linux Subsystem für Windows, Git Bash unter Windows usw.:
export FLASK_APP=myapp
export FLASK_ENV=development
flask run
Verwenden Sie für Windows CMD anstelle des Exports set
:
set FLASK_ENV=development
Verwenden Sie für PowerShell $env
:
$env:FLASK_ENV = "development"
Vor Flask 1.0 wurde dies stattdessen von der Umgebungsvariable FLASK_DEBUG=1
gesteuert.
Wenn Sie die app.run()
-Methode anstelle des flask run
-Befehls verwenden, übergeben Sie debug=True
, um den Debug-Modus zu aktivieren.
Tracebacks werden unabhängig vom Entwicklungsmodus auch an das Terminal gesendet, auf dem der Server ausgeführt wird.
Wenn Sie PyCharm, VS Code usw. verwenden, können Sie den Debugger dazu verwenden, den Code mit Haltepunkten schrittweise durchzugehen. Die Laufkonfiguration kann auf ein Skript verweisen, das app.run(debug=True, use_reloader=False)
aufruft, oder auf das Skript venv/bin/flask
und es wie von der Befehlszeile aus verwenden. Sie können den Reloader deaktiviert lassen, aber ein Reload-Vorgang bricht den Debugging-Kontext ab und Sie müssen einen Haltepunkt erneut abrufen.
Sie können auch pdb, pudb oder einen anderen Terminal-Debugger verwenden, indem Sie set_trace
in der Ansicht aufrufen, in der Sie mit dem Debugging beginnen möchten.
Stellen Sie sicher, dass Sie nicht zu breite Blöcke verwenden, außer für Blöcke. Wenn Sie Ihren gesamten Code mit einem Catch-All try... except...
umgeben, wird der Fehler, den Sie debuggen möchten, stummgeschaltet. Im Allgemeinen ist dies nicht erforderlich, da Flask Ausnahmen bereits behandelt, indem der Debugger oder ein Fehler 500 angezeigt und das Traceback auf die Konsole gedruckt wird.
Sie können app.run(debug=True)
für den Werkzeug Debuggeredit verwenden, wie unten erwähnt, und ich hätte es wissen müssen.
In der 0.11
-Dokumentation können Sie den Debug-Modus aktivieren, indem Sie eine Umgebungsvariable exportieren:
export FLASK_APP=/daemon/api/views.py # path to app
export FLASK_DEBUG=1
python -m flask run --Host=0.0.0.0
Ersetzen Sie bei Verwendung von Visual Studio Code
app.run(debug=True)
mit
app.run()
Es erscheint, wenn der interne Debugger aktiviert wird, der VS-Code-Debugger deaktiviert wird.
Sie können auch die Erweiterung Flask Debug Toolbar verwenden, um detailliertere Informationen in gerenderten Seiten anzuzeigen.
from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
import logging
app = Flask(__name__)
app.debug = True
app.secret_key = 'development key'
toolbar = DebugToolbarExtension(app)
@app.route('/')
def index():
logging.warning("See this message in Flask Debug Toolbar!")
return "<html><body></body></html>"
Starten Sie die Anwendung wie folgt:
FLASK_APP=main.py FLASK_DEBUG=1 flask run
Schneller Tipp - Wenn Sie einen PyCharm verwenden, gehen Sie zu Edit Configurations
=> Configurations
und aktivieren Sie das Kontrollkästchen FLASK_DEBUG
. Starten Sie die Run
erneut.
Wenn Sie Ihre Flak-App debuggen möchten, gehen Sie einfach zu dem Ordner, in dem sich die Flaschen-App befindet. Vergessen Sie nicht, Ihre virtuelle Umgebung zu aktivieren, und fügen Sie die Zeilen in der Konsole ein.
export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --Host=0.0.0.0
Nachdem Sie den Debugger für die Flaschen-App aktiviert haben, wird fast jeder Fehler auf der Konsole oder im Browserfenster gedruckt .. Wenn Sie wissen möchten, was passiert, können Sie einfache Druckanweisungen verwenden oder auch console.log () für Javascript-Code.
Wenn Sie es lokal ausführen und den Code schrittweise ausführen möchten:
python -m pdb script.py
Installieren Sie python-dotenv
in Ihrer virtuellen Umgebung.
Erstellen Sie eine .flaskenv-Datei in Ihrem Projektstamm. Mit Projektstamm ist der Ordner gemeint, in dem sich Ihre Datei app.py befindet
Schreiben Sie in diese Datei Folgendes:
FLASK_APP=myapp
FLASK_ENV=development
Geben Sie nun den folgenden Befehl ein:
flask run
Verwenden Sie Logger und Druckanweisungen in der Entwicklungsumgebung. In Produktionsumgebungen können Sie sich für einen Wachposten entscheiden.