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'}

Sources