File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1212
1313from app .config import get_settings
1414from app .exceptions import AppException , app_exception_handler , generic_exception_handler
15- from app .middleware import RequestLoggingMiddleware
15+ from app .middleware import RequestIDMiddleware , RequestLoggingMiddleware
1616from app .routers import data_process , data_upload , deep_learning , project
1717from app .shared .logging_config import get_logger
1818from app .socketio_instance import sio
@@ -43,6 +43,7 @@ async def lifespan(app: FastAPI):
4343 allow_methods = ["*" ],
4444 allow_headers = ["*" ],
4545)
46+ app .add_middleware (RequestIDMiddleware )
4647app .add_middleware (RequestLoggingMiddleware )
4748
4849app .add_exception_handler (AppException , app_exception_handler )
Original file line number Diff line number Diff line change 1- """HTTP request/response logging middleware."""
1+ """HTTP request/response logging and tracing middleware."""
22
33import re
44import time
5+ import uuid
56
67from starlette .middleware .base import BaseHTTPMiddleware
78from starlette .requests import Request
@@ -22,6 +23,21 @@ def _sanitize_path(path: str) -> str:
2223 return path
2324
2425
26+ class RequestIDMiddleware (BaseHTTPMiddleware ):
27+ """Add a unique request ID to each request for tracing."""
28+
29+ async def dispatch (self , request : Request , call_next ) -> Response :
30+ request_id = request .headers .get ("X-Request-ID" )
31+ if not request_id :
32+ request_id = str (uuid .uuid4 ())
33+
34+ request .state .request_id = request_id
35+ response = await call_next (request )
36+ response .headers ["X-Request-ID" ] = request_id
37+
38+ return response
39+
40+
2541class RequestLoggingMiddleware (BaseHTTPMiddleware ):
2642 """Log method, path, status code, and duration for every HTTP request."""
2743
You can’t perform that action at this time.
0 commit comments