|
@@ -0,0 +1,56 @@
|
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
|
+"""
|
|
|
|
+@Time : 2021/9/22 17:08
|
|
|
|
+@Auth : Locky
|
|
|
|
+@File :requestRecord.py
|
|
|
|
+@IDE :PyCharm
|
|
|
|
+"""
|
|
|
|
+import json
|
|
|
|
+import time
|
|
|
|
+from django.utils.deprecation import MiddlewareMixin
|
|
|
|
+
|
|
|
|
+from Model.models import RequestRecordModel
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class RequestRecordMiddleware(MiddlewareMixin):
|
|
|
|
+ def process_request(self, request):
|
|
|
|
+ request.start_time = time.time()
|
|
|
|
+
|
|
|
|
+ def process_response(self, request, response):
|
|
|
|
+ execute_time = time.time() - request.start_time
|
|
|
|
+ method = request.method
|
|
|
|
+ url = request.path
|
|
|
|
+
|
|
|
|
+ # 获取请求参数并转为字符串
|
|
|
|
+ if method == 'GET':
|
|
|
|
+ parameter = json.dumps(request.GET.dict())
|
|
|
|
+ elif method == 'POST':
|
|
|
|
+ parameter = json.dumps(request.POST.dict())
|
|
|
|
+ else:
|
|
|
|
+ parameter = ''
|
|
|
|
+
|
|
|
|
+ if response.status_code == 500: # 处理没有捕获异常的情况
|
|
|
|
+ request_record_data = {
|
|
|
|
+ 'method': method,
|
|
|
|
+ 'url': url,
|
|
|
|
+ 'parameter': parameter,
|
|
|
|
+ 'execute_time': execute_time,
|
|
|
|
+ 'status_code': 500,
|
|
|
|
+ 'reason_phrase': response.reason_phrase,
|
|
|
|
+ }
|
|
|
|
+ RequestRecordModel.objects.create(**request_record_data)
|
|
|
|
+ else: # 处理捕获异常的情况
|
|
|
|
+ print('content: ', response.content)
|
|
|
|
+ content = eval(str(response.content, 'utf-8')) # bytes 转为 dict
|
|
|
|
+ if content['result_code'] == 500:
|
|
|
|
+ print(content['result'])
|
|
|
|
+ request_record_data = {
|
|
|
|
+ 'method': method,
|
|
|
|
+ 'url': url,
|
|
|
|
+ 'parameter': parameter,
|
|
|
|
+ 'execute_time': execute_time,
|
|
|
|
+ 'status_code': 500,
|
|
|
|
+ 'reason_phrase': content['result'],
|
|
|
|
+ }
|
|
|
|
+ RequestRecordModel.objects.create(**request_record_data)
|
|
|
|
+ return response
|