Vue d'ensemble
Uvicorn 0.21, publié le 9 mars 2023, introduit le lifespan state permettant de partager un état entre le cycle de vie de l'application et les requêtes.
Fonctionnalités principales
Lifespan state
Le dictionnaire state passé au protocole lifespan est désormais injecté dans chaque scope de requête, facilitant le partage de connexions DB, caches et autres ressources initialisées au démarrage.
python
from contextlib import asynccontextmanager
from fastapi import FastAPI, Request
@asynccontextmanager
async def lifespan(app):
# Démarrage : initialiser les ressources
app.state.db = await create_pool()
yield
# Arrêt : fermer les ressources
await app.state.db.close()
app = FastAPI(lifespan=lifespan)
@app.get('/')
async def root(request: Request):
pool = request.state.db
return {'status': 'ok'}
