6.1 KiB
Debuggen
Sie können FastAPI in Ihrem Editor debuggen, was wir am Beispiel Visual Studio Code und PyCharm hier zeigen wollen.
Visual Studio Code
Visual Studio Code (oder kurz, VS Code) verfügt bereits über eine Debugger-Konfiguration speziell für FastAPI.
Nehmen wir an, Sie haben ihre FastAPI Anwendung in einer Datei myapp.py untergebracht:
{!../../../docs_src/debugging/tutorial001.py!}
In VS Code können Sie diese Anwendung nun wie folgt debuggen:
-
Öffnen Sie ihre
myapp.py. Achten Sie auch darauf, dass deren Editor-Tab aktiv ist. -
Öffnen Sie nun links das Debug-Panel – Das Panel „Ausführen und debuggen“.
-
Klicken Sie dort auf den Link „erstellen Sie eine launch.json-Datei“.
-
In dem Dropdown, der jetzt angezeigt wird, wählen Sie „FastAPI“.
-
In dem anschließenden Dropdown geben Sie den Namen ihrer Anwendungsdatei ein, hier
myapp.py(Das ist nur notwendig, weil VS Code keine Dateimain.pygefunden hat). -
Jetzt wird in ihrem Projekt, im Unterordner
.vscode/, eine Dateilaunch.jsonerstellt und im Editor geöffnet. Sie wird ungefähr so aussehen:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: FastAPI",
"type": "python",
"request": "launch",
"module": "uvicorn",
"args": [
"myapp:app",
"--reload"
],
"jinja": true,
"justMyCode": true
}
]
}
-
Alle wichtigen Einstellungen sind bereits vorgenommen, Sie müssen diese Datei nicht weiter bearbeiten, und können sie schließen.
-
Die von ihnen soeben erzeugte Debug-Konfiguration wird jetzt auch im Debug-Panel oben als „Python: FastAPI“ angezeigt.
-
Klicken Sie auf das grüne Dreieck neben Ihrer „Python: FastAPI“- Konfiguration, oder drücken Sie die Taste
F5. -
Das Debuggen beginnt. Oben erscheint ein Kästchen mit Buttons, etwa um das Debuggen nach einem Haltepunkt fortzusetzen, oder um das Debuggen zu beenden.
-
Der FastAPI Entwicklungsserver wird gestartet, wie Sie im sich unten öffnenden Terminal sehen können.
-
Fügen Sie jetzt in
myapp.py, beispielsweise in der letzten Zeile der Funktion, einen Haltepunkt hinzu, indem Sie auf den roten Punkt klicken, der erscheint, wenn Sie die Maus über die Zeilennummer bewegen. -
Besuchen Sie in Ihrem Webbrowser die Startseite Ihrer Anwendung unter http://127.0.0.1:8000/.
-
In VS Code können Sie jetzt sehen, dass der Debugger bei ihrem Haltepunkt stoppt. Die aufgerufene Webseite hört nicht auf, zu laden, da Sie dem Debugger gesagt haben, vor der Rückgabe der Response zu stoppen. Links in Debug-Panel sehen Sie die aktuell verfügbaren lokalen und globalen Variablen. So sieht es etwa aus:
-
Um die Ausführung fortzusetzen, klicken Sie im Debug-Kästchen auf den Button „Continue“. Jetzt wird die Response zurückgeliefert und die Webseite im Browser lädt zu Ende.
-
Um das Debuggen zu beenden, klicken Sie (eventuell mehrmals) auf den Stop-Button im selben Kästchen. Der Entwicklungsserver wird beendet.
Damit wissen Sie das Notwendige, um Ihre Anwendung in VS Code zu debuggen! 🚀
PyCharm
PyCharm verfügt derzeit noch über keine Debug-Konfiguration speziell für FastAPI-Anwendungen, daher werden wir den uvicorn-Server direkt aus unserer myapp.py heraus ausführen.
uvicorn aufrufen
Importieren Sie uvicorn und führen Sie es direkt aus:
{!../../../docs_src/debugging/tutorial002.py!}
Über __name__ == "__main__"
Der Hauptzweck von __name__ == "__main__" besteht darin, einen Codeblock zu haben, der ausgeführt wird, wenn Ihre Datei aufgerufen wird mit:
$ python myapp.py
der aber nicht ausgeführt wird, wenn eine andere Datei sie importiert, wie in:
from myapp import app
Weitere Details
Wenn Sie Ihre Datei ausführen mit:
$ python myapp.py
dann wird die interne Variable __name__ in Ihrer Datei, welche automatisch von Python erstellt wird, als Wert den String "__main__" haben.
Also wird der Abschnitt:
uvicorn.run(app, host="0.0.0.0", port=8000)
ausgeführt.
Dies wird nicht passieren, wenn Sie dieses Modul (diese Datei) importieren.
Wenn Sie also eine andere Datei importer.py haben mit:
from myapp import app
# Hier mehr Code
wird in dem Fall die automatisch erstellte Variable __name__ in myapp.py nicht den Wert "__main__" haben.
Also wird die Zeile:
uvicorn.run(app, host="0.0.0.0", port=8000)
nicht ausgeführt.
!!! info Weitere Informationen finden Sie in der offiziellen Python-Dokumentation.
Den Code mit dem Debugger ausführen
Da Sie den Uvicorn-Server nun direkt aus Ihrem Code heraus ausführen, können Sie Ihr Python-Programm (Ihre FastAPI-Anwendung) direkt über den PyCharm Debugger (oder Debuggern von anderen Editoren) aufrufen.
-
Klicken Sie einfach auf das grüne Dreieck, das links neben der Zeile
if __name__ == "__main__":erscheint, und wählen Sie „Debug 'myapp'“. -
Der Debugger startet. Unten öffnen sich ein Konsolenfenster, das anzeigt, dass der Uvicorn Entwicklungsserver hochfährt.
-
Fahren Sie anschließend fort wie unter Visual Studio Code: Setzen Sie Haltepunkte, laden Sie die Seite im Browser, begutachten Sie den aktuellen Zustand Ihrer Anwendung. Und auch hier haben Sie, diesmal unten, Buttons, um mit dem Debuggen fortzufahren, es zu beenden, usw. So sieht es etwa aus:
Und damit wissen Sie auch das Notwendige, um Ihre Anwendung in PyCharm zu debuggen! 🚀