| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | 
							- # -*- 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 Ansjer.config import LOGGER
 
- from Model.models import RequestRecordModel
 
- class RequestRecordMiddleware(MiddlewareMixin):
 
-     def process_request(self, request):
 
-         request.start_time = time.time()
 
-     def process_response(self, request, response):
 
-         try:
 
-             execute_time = time.time() - request.start_time
 
-             method = request.method
 
-             url = request.path
 
-             if url != '/cloudstorage/getsignsts':
 
-                 # 获取请求参数并转为字符串
 
-                 if method == 'GET':
 
-                     parameter = json.dumps(request.GET.dict())
 
-                 elif method == 'POST':
 
-                     parameter = json.dumps(request.POST.dict())
 
-                 else:
 
-                     parameter = ''
 
-                 content = eval(str(response.content, 'utf-8'))  # bytes 转为 dict
 
-                 # 记录响应码不为0的接口日志
 
-                 if ('result_code' in content and content['result_code'] != 0) or \
 
-                         ('code' in content and content['code'] != 0):
 
-                     LOGGER.info('请求路径:{}, 请求方式:{}, 输入数据:{}, 输出数据:{}, 响应状态:{}'.
 
-                                 format(url, method, parameter, content, response.status_code))
 
-                 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)
 
-                 elif response.content:  # 处理捕获异常的情况
 
-                     error_flag = False
 
-                     reason_phrase = ''
 
-                     if 'result_code' in content and (content['result_code'] == 500 or content['result_code'] == 474):
 
-                         reason_phrase = content['result']
 
-                         error_flag = True
 
-                     elif 'code' in content and content['code'] == 500:  # ResponseObject.returntype == 'pc'
 
-                         reason_phrase = content['data']
 
-                         error_flag = True
 
-                     if error_flag:
 
-                         request_record_data = {
 
-                             'method': method,
 
-                             'url': url,
 
-                             'parameter': parameter,
 
-                             'execute_time': execute_time,
 
-                             'status_code': 500,
 
-                             'reason_phrase': reason_phrase,
 
-                         }
 
-                         RequestRecordModel.objects.create(**request_record_data)
 
-         finally:
 
-             return response
 
 
  |