Concept Flow - Connection lifecycle management
Start Request
Open Connection
Process Request
Close Connection
End Request
This flow shows how FastAPI opens a connection at the start of a request, processes it, then closes the connection at the end.
from fastapi import FastAPI, Depends from sqlalchemy.orm import Session app = FastAPI() def get_db(): db = Session() try: yield db finally: db.close()
| Step | Action | Connection State | Yielded Value | Notes |
|---|---|---|---|---|
| 1 | Request received | No connection | None | Start handling request |
| 2 | Call get_db() | Open connection | db session object | Connection opened and yielded |
| 3 | Process endpoint using db | Connection open | db session object | Use connection for queries |
| 4 | Request processing done | Connection open | db session object | Ready to close connection |
| 5 | Exit get_db() generator | Connection closed | None | Connection closed in finally block |
| 6 | Response sent | No connection | None | Request fully handled |
| Variable | Start | After Step 2 | After Step 5 | Final |
|---|---|---|---|---|
| db | None | Session object (open) | None (closed) | None (closed) |
FastAPI connection lifecycle: - Open connection before request (yield in dependency) - Use connection during request - Close connection after request (finally block) - Ensures resources free even on errors - Use generator dependencies for clean lifecycle