inital
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
"""Request ID middleware for request tracing."""
|
||||
import uuid
|
||||
from flask import g, request
|
||||
|
||||
|
||||
class RequestIDMiddleware:
|
||||
"""Middleware to add unique request ID to each request."""
|
||||
|
||||
def __init__(self, app=None):
|
||||
"""Initialize middleware."""
|
||||
self.app = app
|
||||
if app is not None:
|
||||
self.init_app(app)
|
||||
|
||||
def init_app(self, app):
|
||||
"""Initialize with Flask app."""
|
||||
app.before_request(self.before_request)
|
||||
app.after_request(self.after_request)
|
||||
|
||||
@staticmethod
|
||||
def before_request():
|
||||
"""Generate or extract request ID before request processing."""
|
||||
# Check if request already has an ID from client
|
||||
request_id = request.headers.get("X-Request-ID")
|
||||
|
||||
# Generate new ID if not provided
|
||||
if not request_id:
|
||||
request_id = str(uuid.uuid4())
|
||||
|
||||
# Store in Flask g object for access throughout request
|
||||
g.request_id = request_id
|
||||
|
||||
@staticmethod
|
||||
def after_request(response):
|
||||
"""Add request ID to response headers."""
|
||||
if hasattr(g, "request_id"):
|
||||
response.headers["X-Request-ID"] = g.request_id
|
||||
return response
|
||||
Reference in New Issue
Block a user