Performance: Shared dependencies across routers
MEDIUM IMPACT
This affects the server response time and resource usage by controlling how often dependencies are created and reused across different routes.
from fastapi import FastAPI, Depends, APIRouter app = FastAPI() async def common_dep(): # expensive setup return 'resource' app_dependency = Depends(common_dep) router1 = APIRouter(dependencies=[app_dependency]) @router1.get('/items') async def items(dep=Depends(common_dep)): return {'dep': dep} router2 = APIRouter(dependencies=[app_dependency]) @router2.get('/users') async def users(dep=Depends(common_dep)): return {'dep': dep} app.include_router(router1) app.include_router(router2)
from fastapi import FastAPI, Depends, APIRouter app = FastAPI() async def common_dep(): # expensive setup return 'resource' router1 = APIRouter() @router1.get('/items') async def items(dep=Depends(common_dep)): return {'dep': dep} router2 = APIRouter() @router2.get('/users') async def users(dep=Depends(common_dep)): return {'dep': dep} app.include_router(router1) app.include_router(router2)
| Pattern | Dependency Calls | CPU Usage | Response Time | Verdict |
|---|---|---|---|---|
| Separate dependency per route | Multiple calls per request | High | Slower | [X] Bad |
| Shared dependency at router level | Single call per request per router | Lower | Faster | [OK] Good |