from fastapi import FastAPI, Request import logging import uuid from .routers.query import router as query_router from .logging_setup import setup_logging, REQ_ID_VAR setup_logging() app = FastAPI() @app.middleware("http") async def req_id_middleware(request: Request, call_next): rid = request.headers.get("x-request-id") or str(uuid.uuid4()) token = REQ_ID_VAR.set(rid) logger = logging.getLogger("slowquery") logger.info(f"request path={request.url.path} method={request.method}") try: import time start = time.time() response = await call_next(request) elapsed_s = round(time.time() - start, 1) logger.info(f"response path={request.url.path} status={response.status_code} {elapsed_s}s") return response finally: try: REQ_ID_VAR.reset(token) except Exception: pass app.include_router(query_router)