middleware.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import django.db
  2. from django.utils.deprecation import MiddlewareMixin
  3. from Ansjer import config as api_settings
  4. from Object.ResponseObject import ResponseObject
  5. from Service import CloudLogs
  6. from Service.MiscellService import MiscellService
  7. class StatisticsUrlMiddleware(MiddlewareMixin):
  8. def _https_statistics_to_reverse(self, request):
  9. path = request.path
  10. index = path.find('/OTA/downloads')
  11. if index != -1:
  12. addsCount = len(api_settings.ADDR_URL)
  13. if addsCount > 1000:
  14. return -1
  15. else:
  16. adds = request.META.get('REMOTE_ADDR', None)
  17. api_settings.ADDR_URL.append(adds)
  18. return 0
  19. def _https_statistics_to_close(self, request):
  20. addsCount = len(api_settings.ADDR_URL)
  21. if addsCount > 0:
  22. api_settings.ADDR_URL.pop(0)
  23. def process_request(self, request):
  24. result = self._https_statistics_to_reverse(request)
  25. if result == -1:
  26. response = ResponseObject()
  27. return response.json(910)
  28. return None
  29. def process_view(self, request, callback, callback_args, callback_kwargs):
  30. if request.path != '/favicon.ico':
  31. print('process_view:', request)
  32. return None
  33. def process_response(self, request, response):
  34. self._https_statistics_to_close(request)
  35. if request.path != '/favicon.ico':
  36. CloudLogs.batch_add_access_log(request=request, status_code=response.status_code)
  37. try:
  38. MiscellService.add_access_log(request=request, status_code=response.status_code)
  39. except Exception as e:
  40. print(repr(e))
  41. django.db.close_old_connections()
  42. return response