@asynccontextmanager lifespan este o componentă esențială în ecosistemul FastAPI. Gestionarea modernă a ciclului de viață (evenimente de pornire și oprire) a conexiunilor la Redis/DB în FastAPI.
Sintaxă și Utilizare Practică
Exemplu practic documentat pas cu pas:
from contextlib import asynccontextmanager
@asynccontextmanager
async def lifespan(app: FastAPI):
# Rulare la pornirea serverului:
await pool_conexiuni_redis.initializeaza()
yield
# Rulare la oprirea eleganta a serverului:
await pool_conexiuni_redis.inchide()
app = FastAPI(lifespan=lifespan)
Bune Practici în Producție
- Arhitectură și Tipizare: Folosiți DTO-uri, validare strictă și principii de decuplare (Inversion of Control).
- Performanță: Evitați interogările N+1, folosiți mecanisme de caching și rute asincrone unde este cazul.
- Securitate: Validați întotdeauna datele de intrare și aplicați filtre de autorizare pe toate endpoint-urile sensibile.