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.main.download import download_file
|
||||||
from flask_app.general.post_processing import outer_post_processing
|
from flask_app.general.post_processing import outer_post_processing
|
||||||
from flask_app.general.接口_技术偏离表 import get_tech_and_business_deviation
|
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
|
from flask_app.ConnectionLimiter import require_connection_limit
|
||||||
get_deviation_bp = Blueprint('get_deviation', __name__)
|
get_deviation_bp = Blueprint('get_deviation', __name__)
|
||||||
@get_deviation_bp.route('/get_deviation', methods=['POST'])
|
@get_deviation_bp.route('/get_deviation', methods=['POST'])
|
||||||
@require_connection_limit(timeout=700)
|
@require_connection_limit(timeout=700)
|
||||||
|
@validate_and_setup_logger
|
||||||
def get_deviation():
|
def get_deviation():
|
||||||
logger = g.logger
|
logger = g.logger
|
||||||
unique_id = g.unique_id
|
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.ConnectionLimiter import require_connection_limit
|
||||||
from flask_app.main.download import download_file
|
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.general.接口_小解析 import little_parse_main
|
||||||
|
from flask_app.routes.utils import validate_request, validate_and_setup_logger
|
||||||
from flask_app.logger_setup import CSTFormatter
|
|
||||||
|
|
||||||
from flask_app.routes.utils import validate_request
|
|
||||||
|
|
||||||
little_zbparse_bp = Blueprint('little_zbparse', __name__)
|
little_zbparse_bp = Blueprint('little_zbparse', __name__)
|
||||||
|
|
||||||
@little_zbparse_bp.route('/little_zbparse', methods=['POST'])
|
@little_zbparse_bp.route('/little_zbparse', methods=['POST'])
|
||||||
@require_connection_limit(timeout=300)
|
@require_connection_limit(timeout=300)
|
||||||
|
@validate_and_setup_logger
|
||||||
def little_zbparse():
|
def little_zbparse():
|
||||||
logger = g.logger
|
logger = g.logger
|
||||||
file_url, zb_type = validate_request()
|
file_url, zb_type = validate_request()
|
||||||
|
@ -1,12 +1,15 @@
|
|||||||
# flask_app/routes/test_zbparse.py
|
# 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 json
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
from flask_app.routes.utils import validate_and_setup_logger
|
||||||
|
|
||||||
test_zbparse_bp = Blueprint('test_zbparse', __name__)
|
test_zbparse_bp = Blueprint('test_zbparse', __name__)
|
||||||
|
|
||||||
@test_zbparse_bp.route('/api/test_zbparse', methods=['POST'])
|
@test_zbparse_bp.route('/api/test_zbparse', methods=['POST'])
|
||||||
|
@validate_and_setup_logger
|
||||||
def test_zbparse():
|
def test_zbparse():
|
||||||
try:
|
try:
|
||||||
return Response(stream_with_context(test_process_and_stream()), content_type='text/event-stream')
|
return Response(stream_with_context(test_process_and_stream()), content_type='text/event-stream')
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# flask_app/routes/upload.py
|
# 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 json
|
||||||
import os
|
import os
|
||||||
import time
|
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.工程标解析main import engineering_bid_main
|
||||||
from flask_app.货物标.货物标解析main import goods_bid_main
|
from flask_app.货物标.货物标解析main import goods_bid_main
|
||||||
from flask_app.general.post_processing import outer_post_processing
|
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, validate_and_setup_logger
|
||||||
from flask_app.routes.utils import generate_deviation_response, validate_request
|
|
||||||
from flask_app.logger_setup import CSTFormatter
|
|
||||||
from flask_app.ConnectionLimiter import require_connection_limit
|
from flask_app.ConnectionLimiter import require_connection_limit
|
||||||
|
|
||||||
|
|
||||||
@ -18,6 +16,7 @@ upload_bp = Blueprint('upload', __name__)
|
|||||||
|
|
||||||
@upload_bp.route('/upload', methods=['POST'])
|
@upload_bp.route('/upload', methods=['POST'])
|
||||||
@require_connection_limit(timeout=800)
|
@require_connection_limit(timeout=800)
|
||||||
|
@validate_and_setup_logger
|
||||||
def zbparse():
|
def zbparse():
|
||||||
logger = g.logger
|
logger = g.logger
|
||||||
try:
|
try:
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
|
#flask_app/routes/utils.py
|
||||||
import json
|
import json
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
|
||||||
from flask import request, jsonify, current_app
|
from flask import request, jsonify, current_app
|
||||||
|
|
||||||
|
from flask_app.logger_setup import create_logger
|
||||||
|
|
||||||
|
|
||||||
def validate_request():
|
def validate_request():
|
||||||
"""
|
"""
|
||||||
@ -79,4 +82,32 @@ def require_connection_limit():
|
|||||||
finally:
|
finally:
|
||||||
limiter.semaphore.release()
|
limiter.semaphore.release()
|
||||||
return wrapped
|
return wrapped
|
||||||
return decorator
|
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'))
|
handler.setFormatter(CSTFormatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
|
||||||
app.logger.addHandler(handler)
|
app.logger.addHandler(handler)
|
||||||
app.logger.setLevel(logging.INFO)
|
app.logger.setLevel(logging.INFO)
|
||||||
@app.before_request
|
# @app.before_request
|
||||||
def before_request():
|
# def before_request():
|
||||||
"""
|
# """
|
||||||
每个请求开始前初始化 logger 和 output_folder,
|
# 每个请求开始前初始化 logger 和 output_folder,
|
||||||
根据请求的端点选择不同的子文件夹。
|
# 根据请求的端点选择不同的子文件夹。
|
||||||
"""
|
# """
|
||||||
# 确定当前请求的端点
|
# # 确定当前请求的端点
|
||||||
blueprint = request.blueprint
|
# blueprint = request.blueprint
|
||||||
# 映射端点到子文件夹
|
# # 映射端点到子文件夹
|
||||||
subfolder_map = {
|
# subfolder_map = {
|
||||||
'get_deviation': 'output3',
|
# 'get_deviation': 'output3',
|
||||||
'little_zbparse': 'output2',
|
# 'little_zbparse': 'output2',
|
||||||
'upload': 'output1',
|
# 'upload': 'output1',
|
||||||
'test_zbparse': 'test_output'
|
# 'test_zbparse': 'test_output'
|
||||||
}
|
# }
|
||||||
# 获取对应的子文件夹,默认为 'output1'
|
# # 获取对应的子文件夹,默认为 'output1'
|
||||||
subfolder = subfolder_map.get(blueprint, 'output1')
|
# subfolder = subfolder_map.get(blueprint, 'output1')
|
||||||
# 创建 logger 和 output_folder
|
# # 创建 logger 和 output_folder
|
||||||
create_logger(app, subfolder)
|
# create_logger(app, subfolder)
|
||||||
|
|
||||||
# 注册蓝图
|
# 注册蓝图
|
||||||
app.register_blueprint(get_deviation_bp)
|
app.register_blueprint(get_deviation_bp)
|
||||||
app.register_blueprint(little_zbparse_bp)
|
app.register_blueprint(little_zbparse_bp)
|
||||||
app.register_blueprint(upload_bp)
|
app.register_blueprint(upload_bp)
|
||||||
app.register_blueprint(test_zbparse_bp)
|
app.register_blueprint(test_zbparse_bp)
|
||||||
app.connection_limiters['upload'] = ConnectionLimiter(max_connections=7)
|
app.connection_limiters['upload'] = ConnectionLimiter(max_connections=10)
|
||||||
app.connection_limiters['get_deviation'] = ConnectionLimiter(max_connections=7)
|
app.connection_limiters['get_deviation'] = ConnectionLimiter(max_connections=10)
|
||||||
app.connection_limiters['default'] = ConnectionLimiter(max_connections=10)
|
app.connection_limiters['default'] = ConnectionLimiter(max_connections=10)
|
||||||
|
|
||||||
@app.teardown_request
|
@app.teardown_request
|
||||||
|
Loading…
x
Reference in New Issue
Block a user