Browse Source

添加try-finally

locky 3 years ago
parent
commit
6348cc21f3
1 changed files with 37 additions and 35 deletions
  1. 37 35
      MiddleWare/requestRecord.py

+ 37 - 35
MiddleWare/requestRecord.py

@@ -18,48 +18,50 @@ class RequestRecordMiddleware(MiddlewareMixin):
         request.start_time = time.time()
 
     def process_response(self, request, response):
-        execute_time = time.time() - request.start_time
-        method = request.method
-        url = request.path
+        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 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
-            if 'result_code' in content and content['result_code'] == 500:
-                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:
+            if response.status_code == 500:     # 处理没有捕获异常的情况
                 request_record_data = {
                     'method': method,
                     'url': url,
                     'parameter': parameter,
                     'execute_time': execute_time,
                     'status_code': 500,
-                    'reason_phrase': reason_phrase,
+                    'reason_phrase': response.reason_phrase,
                 }
                 RequestRecordModel.objects.create(**request_record_data)
-        return response
+            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
+                if 'result_code' in content and content['result_code'] == 500:
+                    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