11.26 优化日志管理
This commit is contained in:
parent
907f225049
commit
ceaaf3c1c9
@ -7,11 +7,12 @@ import os
|
||||
from flask_app.main.download import download_file
|
||||
from flask_app.general.post_processing import outer_post_processing
|
||||
from flask_app.general.接口_技术偏离表 import get_tech_and_business_deviation
|
||||
from flask_app.routes.utils import generate_deviation_response, validate_request
|
||||
from flask_app.routes.utils import generate_deviation_response, validate_request, validate_and_setup_logger
|
||||
from flask_app.ConnectionLimiter import require_connection_limit
|
||||
get_deviation_bp = Blueprint('get_deviation', __name__)
|
||||
@get_deviation_bp.route('/get_deviation', methods=['POST'])
|
||||
@require_connection_limit(timeout=700)
|
||||
@validate_and_setup_logger
|
||||
def get_deviation():
|
||||
logger = g.logger
|
||||
unique_id = g.unique_id
|
||||
|
@ -6,17 +6,14 @@ from flask import Blueprint, request, jsonify, Response, g
|
||||
|
||||
from flask_app.ConnectionLimiter import require_connection_limit
|
||||
from flask_app.main.download import download_file
|
||||
from flask_app.general.post_processing import outer_post_processing
|
||||
from flask_app.general.接口_小解析 import little_parse_main
|
||||
|
||||
from flask_app.logger_setup import CSTFormatter
|
||||
|
||||
from flask_app.routes.utils import validate_request
|
||||
from flask_app.routes.utils import validate_request, validate_and_setup_logger
|
||||
|
||||
little_zbparse_bp = Blueprint('little_zbparse', __name__)
|
||||
|
||||
@little_zbparse_bp.route('/little_zbparse', methods=['POST'])
|
||||
@require_connection_limit(timeout=300)
|
||||
@validate_and_setup_logger
|
||||
def little_zbparse():
|
||||
logger = g.logger
|
||||
file_url, zb_type = validate_request()
|
||||
|
@ -1,12 +1,15 @@
|
||||
# flask_app/routes/test_zbparse.py
|
||||
|
||||
from flask import Blueprint, Response, stream_with_context
|
||||
from flask import Blueprint, Response, stream_with_context, current_app, jsonify
|
||||
import json
|
||||
import time
|
||||
|
||||
from flask_app.routes.utils import validate_and_setup_logger
|
||||
|
||||
test_zbparse_bp = Blueprint('test_zbparse', __name__)
|
||||
|
||||
@test_zbparse_bp.route('/api/test_zbparse', methods=['POST'])
|
||||
@validate_and_setup_logger
|
||||
def test_zbparse():
|
||||
try:
|
||||
return Response(stream_with_context(test_process_and_stream()), content_type='text/event-stream')
|
||||
|
@ -1,5 +1,5 @@
|
||||
# flask_app/routes/upload.py
|
||||
from flask import Blueprint, request, jsonify, Response, stream_with_context, g
|
||||
from flask import Blueprint, request, jsonify,g
|
||||
import json
|
||||
import os
|
||||
import time
|
||||
@ -8,9 +8,7 @@ from flask_app.main.download import download_file
|
||||
from flask_app.main.工程标解析main import engineering_bid_main
|
||||
from flask_app.货物标.货物标解析main import goods_bid_main
|
||||
from flask_app.general.post_processing import outer_post_processing
|
||||
from flask_app.general.接口_技术偏离表 import get_tech_and_business_deviation
|
||||
from flask_app.routes.utils import generate_deviation_response, validate_request
|
||||
from flask_app.logger_setup import CSTFormatter
|
||||
from flask_app.routes.utils import generate_deviation_response, validate_request, validate_and_setup_logger
|
||||
from flask_app.ConnectionLimiter import require_connection_limit
|
||||
|
||||
|
||||
@ -18,6 +16,7 @@ upload_bp = Blueprint('upload', __name__)
|
||||
|
||||
@upload_bp.route('/upload', methods=['POST'])
|
||||
@require_connection_limit(timeout=800)
|
||||
@validate_and_setup_logger
|
||||
def zbparse():
|
||||
logger = g.logger
|
||||
try:
|
||||
|
@ -1,8 +1,11 @@
|
||||
#flask_app/routes/utils.py
|
||||
import json
|
||||
from functools import wraps
|
||||
|
||||
from flask import request, jsonify, current_app
|
||||
|
||||
from flask_app.logger_setup import create_logger
|
||||
|
||||
|
||||
def validate_request():
|
||||
"""
|
||||
@ -80,3 +83,31 @@ def require_connection_limit():
|
||||
limiter.semaphore.release()
|
||||
return wrapped
|
||||
return decorator
|
||||
|
||||
#装饰器来简化验证和日志初始化
|
||||
def validate_and_setup_logger(f):
|
||||
@wraps(f)
|
||||
def decorated_function(*args, **kwargs):
|
||||
# 进行请求验证
|
||||
validation_result = validate_request()
|
||||
if isinstance(validation_result, tuple):
|
||||
file_url, zb_type = validation_result
|
||||
|
||||
# 根据蓝图确定子文件夹
|
||||
blueprint = request.blueprint
|
||||
subfolder_map = {
|
||||
'get_deviation': 'output3',
|
||||
'little_zbparse': 'output2',
|
||||
'upload': 'output1',
|
||||
'test_zbparse': 'test_output'
|
||||
}
|
||||
subfolder = subfolder_map.get(blueprint, 'output1')
|
||||
|
||||
# 创建 logger 和 output_folder
|
||||
create_logger(current_app, subfolder)
|
||||
|
||||
return f(*args, **kwargs)
|
||||
else:
|
||||
# 验证失败,返回错误响应
|
||||
return validation_result
|
||||
return decorated_function
|
@ -23,33 +23,33 @@ def create_app():
|
||||
handler.setFormatter(CSTFormatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
|
||||
app.logger.addHandler(handler)
|
||||
app.logger.setLevel(logging.INFO)
|
||||
@app.before_request
|
||||
def before_request():
|
||||
"""
|
||||
每个请求开始前初始化 logger 和 output_folder,
|
||||
根据请求的端点选择不同的子文件夹。
|
||||
"""
|
||||
# 确定当前请求的端点
|
||||
blueprint = request.blueprint
|
||||
# 映射端点到子文件夹
|
||||
subfolder_map = {
|
||||
'get_deviation': 'output3',
|
||||
'little_zbparse': 'output2',
|
||||
'upload': 'output1',
|
||||
'test_zbparse': 'test_output'
|
||||
}
|
||||
# 获取对应的子文件夹,默认为 'output1'
|
||||
subfolder = subfolder_map.get(blueprint, 'output1')
|
||||
# 创建 logger 和 output_folder
|
||||
create_logger(app, subfolder)
|
||||
# @app.before_request
|
||||
# def before_request():
|
||||
# """
|
||||
# 每个请求开始前初始化 logger 和 output_folder,
|
||||
# 根据请求的端点选择不同的子文件夹。
|
||||
# """
|
||||
# # 确定当前请求的端点
|
||||
# blueprint = request.blueprint
|
||||
# # 映射端点到子文件夹
|
||||
# subfolder_map = {
|
||||
# 'get_deviation': 'output3',
|
||||
# 'little_zbparse': 'output2',
|
||||
# 'upload': 'output1',
|
||||
# 'test_zbparse': 'test_output'
|
||||
# }
|
||||
# # 获取对应的子文件夹,默认为 'output1'
|
||||
# subfolder = subfolder_map.get(blueprint, 'output1')
|
||||
# # 创建 logger 和 output_folder
|
||||
# create_logger(app, subfolder)
|
||||
|
||||
# 注册蓝图
|
||||
app.register_blueprint(get_deviation_bp)
|
||||
app.register_blueprint(little_zbparse_bp)
|
||||
app.register_blueprint(upload_bp)
|
||||
app.register_blueprint(test_zbparse_bp)
|
||||
app.connection_limiters['upload'] = ConnectionLimiter(max_connections=7)
|
||||
app.connection_limiters['get_deviation'] = ConnectionLimiter(max_connections=7)
|
||||
app.connection_limiters['upload'] = ConnectionLimiter(max_connections=10)
|
||||
app.connection_limiters['get_deviation'] = ConnectionLimiter(max_connections=10)
|
||||
app.connection_limiters['default'] = ConnectionLimiter(max_connections=10)
|
||||
|
||||
@app.teardown_request
|
||||
|
Loading…
x
Reference in New Issue
Block a user