2024-11-23 17:50:32 +08:00
|
|
|
|
# flask_app/start_up.py
|
2024-10-12 18:01:59 +08:00
|
|
|
|
|
2025-02-06 14:39:58 +08:00
|
|
|
|
from flask import Flask, g
|
2024-11-25 09:15:56 +08:00
|
|
|
|
from flask_app.ConnectionLimiter import ConnectionLimiter
|
2024-12-11 17:42:51 +08:00
|
|
|
|
from flask_app.logger_setup import create_logger_main
|
2024-11-23 17:50:32 +08:00
|
|
|
|
from flask_app.routes.get_deviation import get_deviation_bp
|
|
|
|
|
from flask_app.routes.little_zbparse import little_zbparse_bp
|
|
|
|
|
from flask_app.routes.upload import upload_bp
|
|
|
|
|
from flask_app.routes.test_zbparse import test_zbparse_bp
|
2025-02-06 14:39:58 +08:00
|
|
|
|
from flask_app.general.llm.清除file_id import delete_file_by_ids,read_file_ids
|
2025-01-10 14:30:35 +08:00
|
|
|
|
from flask_app.routes.judge_zbfile import judge_zbfile_bp
|
2024-11-25 09:15:56 +08:00
|
|
|
|
class FlaskAppWithLimiter(Flask):
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
|
super().__init__(*args, **kwargs)
|
2024-11-25 16:04:53 +08:00
|
|
|
|
# 初始化一个字典来存储每个蓝图的限流器
|
|
|
|
|
self.connection_limiters = {}
|
2024-11-23 17:50:32 +08:00
|
|
|
|
def create_app():
|
2024-11-25 09:15:56 +08:00
|
|
|
|
app = FlaskAppWithLimiter(__name__)
|
2024-12-11 17:42:51 +08:00
|
|
|
|
# 创建全局日志记录器
|
|
|
|
|
app.global_logger = create_logger_main('global_log') # 全局日志记录器
|
2024-11-23 17:50:32 +08:00
|
|
|
|
# 注册蓝图
|
|
|
|
|
app.register_blueprint(get_deviation_bp)
|
|
|
|
|
app.register_blueprint(little_zbparse_bp)
|
|
|
|
|
app.register_blueprint(upload_bp)
|
|
|
|
|
app.register_blueprint(test_zbparse_bp)
|
2025-01-10 14:30:35 +08:00
|
|
|
|
app.register_blueprint(judge_zbfile_bp)
|
2024-11-26 11:32:24 +08:00
|
|
|
|
app.connection_limiters['upload'] = ConnectionLimiter(max_connections=10)
|
|
|
|
|
app.connection_limiters['get_deviation'] = ConnectionLimiter(max_connections=10)
|
2024-12-12 16:21:20 +08:00
|
|
|
|
app.connection_limiters['default'] = ConnectionLimiter(max_connections=10)
|
2025-01-10 14:30:35 +08:00
|
|
|
|
app.connection_limiters['judge_zbfile']=ConnectionLimiter(max_connections=30)
|
2024-11-25 16:24:38 +08:00
|
|
|
|
|
2024-12-02 16:52:51 +08:00
|
|
|
|
@app.teardown_request
|
|
|
|
|
def teardown_request(exception):
|
2025-02-07 15:27:24 +08:00
|
|
|
|
#接口请求之后都会执行该代码,做一些清理工作
|
2024-12-02 16:52:51 +08:00
|
|
|
|
output_folder = getattr(g, 'output_folder', None)
|
|
|
|
|
if output_folder:
|
|
|
|
|
# 执行与output_folder相关的清理操作(例如删除临时文件)
|
2024-12-05 15:01:37 +08:00
|
|
|
|
logger = g.logger # 使用 app 的 logger
|
2024-12-02 16:52:51 +08:00
|
|
|
|
logger.info(f"正在清理输出文件夹: {output_folder}")
|
2024-12-05 11:26:45 +08:00
|
|
|
|
file_ids = read_file_ids(output_folder)
|
|
|
|
|
failed_file_ids = delete_file_by_ids(file_ids)
|
|
|
|
|
if failed_file_ids:
|
|
|
|
|
logger.error(f"以下文件删除失败: {failed_file_ids}")
|
|
|
|
|
else:
|
|
|
|
|
logger.info("清理完毕!")
|
2024-11-23 17:50:32 +08:00
|
|
|
|
return app
|
2024-08-30 11:56:11 +08:00
|
|
|
|
|
2024-12-05 11:26:45 +08:00
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
app = create_app()
|
|
|
|
|
app.run(debug=True, host='0.0.0.0', port=5000)
|