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

Noch keine Kommentare.

Noch keine Kommentare.