22 points par rumbarum 2023-08-21 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  1. Ça vaut le coup d’essayer de suivre la trace de pile avec PyCharm.
    1. Cela permet de vérifier quelles valeurs ont les variables utilisées et, s’il s’agit d’instances, quels attributs elles possèdent.
  2. FastAPI semble difficilement pouvoir exister sans Starlette.
    1. Même la classe de base est construite en héritant de Starlette, et Request, Response, Router, Middleware, etc. sont tous basés sur Starlette.
    2. On finit par lire davantage de code de Starlette que de code de FastAPI.
    3. Cela donne l’impression qu’on pourrait aussi construire une application directement avec Starlette, sans FastAPI.
  3. Les rôles de Uvicorn ↔ Starlette ↔ FastAPI deviennent plus clairs.
    1. Uvicorn : interface de communication externe
    2. Starlette : interface de fonctionnement interne du serveur
    3. FastAPI : ajoute par-dessus Starlette des facilités pour écrire les fonctions d’endpoint et interagir avec Uvicorn (Depends(), validation des paramètres via Pydantic, etc.)
  4. J’ai mieux compris le middleware.
    1. On peut voir que le traitement des requêtes passe par ServerErrorMiddleware → middlewares personnalisés → ExceptionMiddleware.
    2. Les handlers attachés avec @app.exception_handler(Exception) sont traités dans ExceptionMiddleware, tandis que les autres erreurs serveur sont prises en charge par ServerErrorMiddleware.
    3. Un groupe de threads distinct est relancé pour éviter que les middlewares ne bloquent.

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.