requestRecord.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # -*- coding: utf-8 -*-
  2. """
  3. @Time : 2021/9/22 17:08
  4. @Auth : Locky
  5. @File :requestRecord.py
  6. @IDE :PyCharm
  7. """
  8. import json
  9. import time
  10. from django.utils.deprecation import MiddlewareMixin
  11. from Model.models import RequestRecordModel
  12. class RequestRecordMiddleware(MiddlewareMixin):
  13. def process_request(self, request):
  14. request.start_time = time.time()
  15. def process_response(self, request, response):
  16. execute_time = time.time() - request.start_time
  17. method = request.method
  18. url = request.path
  19. # 获取请求参数并转为字符串
  20. if method == 'GET':
  21. parameter = json.dumps(request.GET.dict())
  22. elif method == 'POST':
  23. parameter = json.dumps(request.POST.dict())
  24. else:
  25. parameter = ''
  26. if response.status_code == 500: # 处理没有捕获异常的情况
  27. request_record_data = {
  28. 'method': method,
  29. 'url': url,
  30. 'parameter': parameter,
  31. 'execute_time': execute_time,
  32. 'status_code': 500,
  33. 'reason_phrase': response.reason_phrase,
  34. }
  35. RequestRecordModel.objects.create(**request_record_data)
  36. else: # 处理捕获异常的情况
  37. print('content: ', response.content)
  38. content = eval(str(response.content, 'utf-8')) # bytes 转为 dict
  39. if content['result_code'] == 500:
  40. print(content['result'])
  41. request_record_data = {
  42. 'method': method,
  43. 'url': url,
  44. 'parameter': parameter,
  45. 'execute_time': execute_time,
  46. 'status_code': 500,
  47. 'reason_phrase': content['result'],
  48. }
  49. RequestRecordModel.objects.create(**request_record_data)
  50. return response