1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- # -*- coding: utf-8 -*-
- """
- @Time : 2021/9/22 17:08
- @Auth : Locky
- @File :requestRecord.py
- @IDE :PyCharm
- """
- import json
- import logging
- 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):
- try:
- 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)
- elif response.content: # 处理捕获异常的情况
- # print('content: ', response.content)
- content = eval(str(response.content, 'utf-8')) # bytes 转为 dict
- # logger = logging.getLogger('info')
- # logger.info('content: {}'.format(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
|