diff --git a/flask_app/routes/get_deviation.py b/flask_app/routes/get_deviation.py index 7c7455f..2fbaba2 100644 --- a/flask_app/routes/get_deviation.py +++ b/flask_app/routes/get_deviation.py @@ -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 diff --git a/flask_app/routes/little_zbparse.py b/flask_app/routes/little_zbparse.py index a0f4a4a..aef5f43 100644 --- a/flask_app/routes/little_zbparse.py +++ b/flask_app/routes/little_zbparse.py @@ -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() diff --git a/flask_app/routes/test_zbparse.py b/flask_app/routes/test_zbparse.py index c19619c..e88abd7 100644 --- a/flask_app/routes/test_zbparse.py +++ b/flask_app/routes/test_zbparse.py @@ -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') diff --git a/flask_app/routes/upload.py b/flask_app/routes/upload.py index 8cc5d99..3d5062d 100644 --- a/flask_app/routes/upload.py +++ b/flask_app/routes/upload.py @@ -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: diff --git a/flask_app/routes/utils.py b/flask_app/routes/utils.py index 10084ff..59323e4 100644 --- a/flask_app/routes/utils.py +++ b/flask_app/routes/utils.py @@ -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(): """ @@ -79,4 +82,32 @@ def require_connection_limit(): finally: limiter.semaphore.release() return wrapped - return decorator \ No newline at end of file + 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 \ No newline at end of file diff --git a/flask_app/start_up.py b/flask_app/start_up.py index 33280a5..2e5c536 100644 --- a/flask_app/start_up.py +++ b/flask_app/start_up.py @@ -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