Performance: FastAPI integration patterns
MEDIUM IMPACT
This concept affects server response time and client perceived latency by how FastAPI integrates with other services or libraries.
from fastapi import FastAPI import asyncio app = FastAPI() @app.get('/async') async def async_route(): result = await asyncio.to_thread(blocking_library_call) return {'result': result}
from fastapi import FastAPI app = FastAPI() @app.get('/sync') def sync_route(): result = blocking_library_call() return {'result': result}
| Pattern | Server Blocking | Resource Usage | Response Latency | Verdict |
|---|---|---|---|---|
| Synchronous blocking calls in routes | High (blocks event loop) | High (CPU waits) | High latency | [X] Bad |
| Async calls with thread offloading | Low (non-blocking) | Moderate (thread overhead) | Low latency | [OK] Good |
| Heavy object init per request | Moderate (CPU heavy) | High (repeated init) | High latency | [X] Bad |
| Heavy object init once at startup | Low | Low | Low latency | [OK] Good |
| Dependency injection with new DB connection per request | Moderate | High (connections open/close) | Moderate latency | [X] Bad |
| Persistent DB connection reuse | Low | Low | Low latency | [OK] Good |