Performance: Global dependencies
Global dependencies affect the server response time and resource usage by running shared logic once per request or application lifecycle.
Jump into concepts and practice - no test required
from fastapi import Depends, FastAPI async def get_db(): db = create_db_connection() try: yield db finally: db.close() app = FastAPI(dependencies=[Depends(get_db)]) @app.get("/items/") async def read_items(db=Depends()): return "Use shared db connection" @app.get("/users/") async def read_users(db=Depends()): return "Use shared db connection"
from fastapi import Depends, FastAPI def get_db(): db = create_db_connection() try: yield db finally: db.close() app = FastAPI() @app.get("/items/") async def read_items(db=Depends(get_db)): return db.query_items() @app.get("/users/") async def read_users(db=Depends(get_db)): return db.query_users()
| Pattern | Resource Initialization | Request Latency | Reusability | Verdict |
|---|---|---|---|---|
| Per-route dependency | Multiple times per request | Higher latency | Low | [X] Bad |
| Global dependency | Once per request | Lower latency | High | [OK] Good |
/items/42?
from fastapi import FastAPI, Depends
app = FastAPI()
def common_dep():
print("Global dependency called")
@app.get("/items/{item_id}")
def read_item(item_id: int, dep=Depends(common_dep)):
return {"item_id": item_id}from fastapi import FastAPI, Depends
def common_dep():
print("Running global dependency")
app = FastAPI(dependencies=Depends(common_dep))