FastAPI Zeile für Zeile mitlesen
(rumbarum.oopy.io)- Es lohnt sich, einmal mit PyCharm ein Stack-Trace nachzuverfolgen.
- Man kann prüfen, welche Werte die verwendeten Variablen haben und, falls es sich um eine Instanz handelt, welche Attribute sie besitzt.
- FastAPI scheint ohne Starlette praktisch nicht existieren zu können.
- Auch die Basisklassen wurden durch Vererbung von Starlette erstellt, und Request, Response, Router, Middleware usw. basieren alle auf Starlette.
- Man sieht letztlich mehr Starlette-Code als FastAPI-Code.
- Man kommt auf die Idee, FastAPI wegzulassen und eine App direkt mit Starlette zu bauen.
- Die Rollen von Uvicorn ↔ Starlette ↔ FastAPI werden klarer spürbar.
- Uvicorn: Schnittstelle für die externe Kommunikation
- Starlette: Schnittstelle für die internen Abläufe des Servers
- FastAPI: interagiert mit Uvicorn, indem es auf Starlette die komfortable Erstellung von Endpoint-Funktionen aufsetzt (
Depends(), Validierung von Parametern über Pydantic usw.)
- Auch das Verständnis von Middleware ist gewachsen.
- Man erkennt, dass die Verarbeitung von Requests über
ServerErrorMiddleware→ benutzerdefinierte Middlewares →ExceptionMiddlewareläuft. - Ein mit
@app.exception_handler(Exception)registrierter Handler wird inExceptionMiddlewareverarbeitet, andere Serverfehler dagegen inServerErrorMiddleware. - Um Blockierungen durch Middlewares zu verhindern, wird erneut eine separate Thread-Gruppe gestartet.
- Man erkennt, dass die Verarbeitung von Requests über
Noch keine Kommentare.