- Ça vaut le coup d’essayer de suivre la trace de pile avec PyCharm.
- Cela permet de vérifier quelles valeurs ont les variables utilisées et, s’il s’agit d’instances, quels attributs elles possèdent.
- FastAPI semble difficilement pouvoir exister sans Starlette.
- 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.
- On finit par lire davantage de code de Starlette que de code de FastAPI.
- Cela donne l’impression qu’on pourrait aussi construire une application directement avec Starlette, sans FastAPI.
- Les rôles de Uvicorn ↔ Starlette ↔ FastAPI deviennent plus clairs.
- Uvicorn : interface de communication externe
- Starlette : interface de fonctionnement interne du serveur
- 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.)
- J’ai mieux compris le middleware.
- On peut voir que le traitement des requêtes passe par
ServerErrorMiddleware → middlewares personnalisés → ExceptionMiddleware.
- 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.
- Un groupe de threads distinct est relancé pour éviter que les middlewares ne bloquent.
Aucun commentaire pour le moment.