blob: 098898cd0192921c408f84e5cb1ee0da38b3730c [file] [log] [blame]
Raverafc93da2025-06-15 18:12:49 +08001from flask import Flask
2from flask_cors import CORS
Raverb48556a2025-06-18 22:55:03 +08003import atexit
4import logging
Raverafc93da2025-06-15 18:12:49 +08005
6def create_app():
7 app = Flask(__name__)
8
9 # 启用CORS支持跨域请求
10 CORS(app)
11
12 # Load configuration
13 app.config.from_object('config.Config')
14
15 # Register blueprints or routes
16 from .routes import main as main_blueprint
17 app.register_blueprint(main_blueprint)
Raverd7895172025-06-18 17:54:38 +080018
19 # Register recommendation blueprint
20 from .blueprints.recommend import recommend_bp
21 app.register_blueprint(recommend_bp)
Raverb48556a2025-06-18 22:55:03 +080022
23 # Register scheduler blueprint
24 from .blueprints.scheduler import scheduler_bp
25 app.register_blueprint(scheduler_bp)
26
27 # 初始化定时任务管理器
28 from .utils.scheduler_manager import SchedulerManager
29
30 scheduler_manager = SchedulerManager()
31 scheduler_manager.init_scheduler(app)
32
33 # 检查是否启用定时任务
34 scheduler_enabled = getattr(app.config, 'SCHEDULER_ENABLED', True)
35 if scheduler_enabled:
36 # 从配置获取重建间隔
37 rebuild_interval = getattr(app.config, 'GRAPH_REBUILD_INTERVAL', 1)
38 scheduler_manager.start_graph_rebuild_task(interval_minutes=rebuild_interval)
39
40 # 注册关闭时的清理函数
41 atexit.register(lambda: scheduler_manager.shutdown())
Raverafc93da2025-06-15 18:12:49 +080042
43 return app
44
45app = create_app()