comment_moderation / api /middleware.py
heatherlead's picture
Add moderation backend with LFS tracking for large files
26c8f44
Raw History Blame Contribute Delete
839 Bytes
"""
middleware.py
=============
FastAPI middleware for request timing and CORS.
"""
import logging
import time
from fastapi import Request
from starlette.middleware.base import BaseHTTPMiddleware
logger = logging.getLogger(__name__)
class TimingMiddleware(BaseHTTPMiddleware):
"""
Middleware that logs request latency and adds X-Process-Time header.
"""
async def dispatch(self, request: Request, call_next):
start = time.perf_counter()
response = await call_next(request)
elapsed_ms = (time.perf_counter() - start) * 1000
response.headers["X-Process-Time"] = f"{elapsed_ms:.2f}ms"
# Log request info
logger.info(
f"{request.method} {request.url.path} — "
f"{response.status_code} — {elapsed_ms:.2f}ms"
)
return response