Add configuration files and comprehensive project documentation
- Add .env.backup with full application configuration template - Create RequestIDMiddleware for trace ID injection in logs - Implement ARQ fallback pool for Redis unavailability - Add Dead Letter Queue module for failed job handling - Include project ROADMAP with audit and 27 applied corrections - Add Grafana monitoring dashboard with 10 panels
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
"""
|
||||
Middleware RequestID — injecte un identifiant unique de requête (trace_id)
|
||||
dans les logs structlog pour le tracing de bout en bout.
|
||||
|
||||
Usage : le trace_id est disponible dans structlog.contextvars.bind_contextvars(trace_id=...)
|
||||
et dans la réponse via l'en-tête X-Request-ID.
|
||||
"""
|
||||
import uuid
|
||||
import structlog
|
||||
from starlette.middleware.base import BaseHTTPMiddleware
|
||||
from starlette.requests import Request
|
||||
from starlette.responses import Response
|
||||
|
||||
|
||||
class RequestIDMiddleware(BaseHTTPMiddleware):
|
||||
async def dispatch(self, request: Request, call_next) -> Response:
|
||||
trace_id = str(uuid.uuid4())
|
||||
|
||||
# Injecter dans structlog pour toute la durée de la requête
|
||||
structlog.contextvars.bind_contextvars(trace_id=trace_id)
|
||||
|
||||
response = await call_next(request)
|
||||
|
||||
# Ajouter l'en-tête dans la réponse pour le client
|
||||
response.headers["X-Request-ID"] = trace_id
|
||||
return response
|
||||
Reference in New Issue
Block a user