|
- import time
- from flask import request, g, jsonify, make_response,current_app
- from common.log import logger
- from datetime import datetime
-
- # 定义生成失败响应的函数
- def fail_response(code, error_message):
- return {
- "Timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3],
- "Result": {
- "Status": "failed",
- "Code": code,
- "Message": error_message
- }
- }
-
- # 定义生成成功响应的函数
- def success_response(data):
- return {
- "Timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3],
- "Data": data,
- "Result": {
- "Status": "succeed",
- "Code": 200,
- "Message": "请求成功!"
- }
- }
-
- def before_request():
- logger.info(f"请求: {request.method} {request.url} ")
- g.start_time = time.time()
-
- def after_request(response):
- elapsed_time = time.time() - g.start_time
- logger.info(f'响应: 用了 {elapsed_time:.4f} 秒')
- # return response
- if response.status_code >= 400:
- # 失败响应
- error_message = response.get_json(silent=True)['message']
- json_response = make_response(jsonify(fail_response(response.status_code, error_message)), response.status_code)
- else:
- # 成功响应
- data = response.get_json(silent=True)
- json_response = make_response(jsonify(success_response(data)), response.status_code)
-
- json_response.headers['X-Processed-Time'] = g.get('start_time', 'unknown')
- return json_response
-
-
- def handle_exception(error):
- logger.error(f'发生异常: {error}')
- # response = jsonify({'error': str(error)})
- response = jsonify({'message': str(error)})
- response.status_code = 500
- return response
|