Dependency dùng yield phù hợp cho resource có setup/cleanup như database session, transaction, file handle hoặc external client. Code trước yield chạy trước handler, code sau yield chạy sau response path operation hoàn tất hoặc khi có exception.
Ví dụ DB session:
async def get_session():
async with async_sessionmaker() as session:
yield sessionKhông nên tạo global mutable session dùng chung nhiều request.
Mỗi request nên có session/resource scope rõ ràng để tránh leak connection và race condition.
A dependency with yield fits resources that need setup/cleanup such as database sessions, transactions, file handles or external clients. Code before yield runs before the handler; code after yield runs after the path operation completes or when an exception happens.
Database session example:
async def get_session():
async with async_sessionmaker() as session:
yield sessionDo not create one global mutable session shared by many requests.
Each request should have clear resource scope to avoid connection leaks and race conditions.