- 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 → ExceptionMiddleware läuft.
- Ein mit
@app.exception_handler(Exception) registrierter Handler wird in ExceptionMiddleware verarbeitet, andere Serverfehler dagegen in ServerErrorMiddleware.
- Um Blockierungen durch Middlewares zu verhindern, wird erneut eine separate Thread-Gruppe gestartet.
Noch keine Kommentare.