Source code for django_dd_logger.middleware.request_id
import re
import time
import uuid
from django_dd_logger.wsgi import local
from django_dd_logger.local import release_local
[docs]
def generate_request_id():
return str(uuid.uuid4())
[docs]
def get_or_create_request_id(request):
request_id = request.META.get("HTTP_X_REQUEST_ID")
if request_id and re.match("^[a-zA-Z0-9+/=-]{20,200}$", request_id):
return request_id
else:
return generate_request_id()
[docs]
class RequestIdMiddleware:
def __init__(self, get_response=None):
self.get_response = get_response
def __call__(self, request):
request.request_id = get_or_create_request_id(request)
request.request_start_time = time.time()
local.request = request
response = self.get_response(request)
response["X-Request-ID"] = request.request_id
release_local(local)
return response