Files
bruno caefc1b1a0
CI / Lint & Format (push) Failing after 11s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
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
2026-06-22 14:50:05 -04:00

27 lines
929 B
Python

"""
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