Când o dependență trebuie să execute o acțiune de curățare după finalizarea cererii HTTP (de exemplu: eliberarea unei conexiuni din connection pool sau închiderea unei tranzacții), FastAPI suportă dependențe cu yield.
Codul dinaintea instrucțiunii yield rulează înainte ca funcția endpoint să fie apelată. Valoarea transmisă prin yield este injectată în endpoint, iar codul de după yield (plasat de regulă într-un bloc finally) este garantat să ruleze chiar dacă funcția a aruncat o eroare.
Exemplu: Dependență de sesiune de bază de date cu yield și bloc finally
from fastapi import FastAPI, Depends
from typing import Annotated
app = FastAPI()
class FakeDBSession:
def close(self):
print("Conexiunea la baza de date a fost închisă în siguranță!")
async def get_db():
db = FakeDBSession()
print("Conexiune DB deschisă")
try:
yield db
finally:
db.close()
@app.get("/items")
async def list_items(db: Annotated[FakeDBSession, Depends(get_db)]):
return {"status": "date interogate"}
Întrebări & Exemple de Cod:
Dependențe cu Yield (Context Managers) în FastAPIAi o nelămurire despre utilizarea comenzii
Dependențe cu Yield (Context Managers) în FastAPIsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.