0
0
FastAPIframework~8 mins

Shared dependencies in FastAPI - Performance & Optimization

Choose your learning style9 modes available
Performance: Shared dependencies
MEDIUM IMPACT
This affects server response time and resource usage by reusing common logic or resources across multiple routes.
Reusing common logic or resources in multiple API endpoints
FastAPI
from fastapi import Depends

from fastapi import FastAPI
app = FastAPI()

shared_db = None

def get_shared_db():
    global shared_db
    if shared_db is None:
        shared_db = create_new_db_connection()
    try:
        yield shared_db
    finally:
        pass  # Do not close shared connection here

@app.get('/items')
async def read_items(db=Depends(get_shared_db)):
    return db.query_items()

@app.get('/users')
async def read_users(db=Depends(get_shared_db)):
    return db.query_users()
Reuses a single shared database connection across requests, reducing connection overhead and speeding up responses.
📈 Performance GainReduces connection setup time, lowers resource consumption, and improves throughput.
Reusing common logic or resources in multiple API endpoints
FastAPI
from fastapi import Depends

from fastapi import FastAPI
app = FastAPI()

def get_db():
    db = create_new_db_connection()
    try:
        yield db
    finally:
        db.close()

@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()
Creates a new database connection for each request and each endpoint separately, causing overhead and slower responses.
📉 Performance CostBlocks request handling for connection setup per endpoint, increasing latency and resource use.
Performance Comparison
PatternResource UsageRequest LatencyThroughputVerdict
Separate dependency per endpointHigh (multiple connections)Higher (connection setup per request)Lower[X] Bad
Shared dependency instanceLow (single shared connection)Lower (reuse connection)Higher[OK] Good
Rendering Pipeline
Shared dependencies reduce server-side processing time before sending the response, improving backend efficiency but do not directly affect browser rendering.
Server Processing
Response Time
⚠️ BottleneckRepeated resource initialization per request
Optimization Tips
1Declare shared dependencies to reuse expensive resources across requests.
2Avoid creating new resource instances in every endpoint handler.
3Use FastAPI's dependency injection to manage shared resources efficiently.
Performance Quiz - 3 Questions
Test your performance knowledge
What is the main performance benefit of using shared dependencies in FastAPI?
AIncreases the number of database connections
BBlocks the event loop for longer
CReduces redundant resource initialization across requests
DAdds extra middleware layers
DevTools: Network
How to check: Open DevTools, go to Network tab, observe response times for API calls under different dependency setups.
What to look for: Look for reduced response latency and faster server response times when using shared dependencies.