middleware.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. from apps.web.constant import REQUEST_ID_HEADER
  4. from utils import local, generate_request_id
  5. def get_request_id(request):
  6. if hasattr(request, 'request_id'):
  7. return request.request_id
  8. else:
  9. return request.META.get(REQUEST_ID_HEADER, generate_request_id())
  10. class RequestIdMiddleware(object):
  11. # Code for Django >= 1.10
  12. def __init__(self, get_response = None):
  13. self.get_response = get_response
  14. def __call__(self, request):
  15. request_id = get_request_id(request)
  16. request.request_id = request_id
  17. local.request_id = request_id
  18. response = self.get_response(request)
  19. del local.request_id
  20. return response
  21. # Compatibility methods for Django <1.10
  22. def process_request(self, request):
  23. request_id = get_request_id(request)
  24. request.request_id = request_id
  25. local.request_id = request_id
  26. def process_response(self, request, response):
  27. del local.request_id
  28. return response