This commit is contained in:
2025-11-28 21:20:40 +08:00
commit f940b95b67
73 changed files with 15721 additions and 0 deletions

57
scheduler.py Normal file
View File

@@ -0,0 +1,57 @@
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.interval import IntervalTrigger
from utils.health_check import HealthChecker
from models import HealthCheckConfig, db
from app import create_app
import logging
# 配置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def init_scheduler(app):
"""初始化定时任务调度器"""
scheduler = BackgroundScheduler()
with app.app_context():
# 获取所有启用的健康检查配置
configs = HealthCheckConfig.query.filter_by(is_enabled=True).all()
for config in configs:
# 为每个平台添加定时任务
scheduler.add_job(
func=lambda platform=config.platform: run_health_check(app, platform),
trigger=IntervalTrigger(seconds=config.check_interval),
id=f'health_check_{config.platform}',
name=f'{config.platform}健康检查',
replace_existing=True
)
logger.info(f"已添加{config.platform}健康检查任务,间隔{config.check_interval}")
scheduler.start()
logger.info("定时任务调度器已启动")
return scheduler
def run_health_check(app, platform):
"""执行健康检查"""
with app.app_context():
try:
logger.info(f"开始执行{platform}健康检查")
HealthChecker.check_platform(platform)
logger.info(f"{platform}健康检查完成")
except Exception as e:
logger.error(f"{platform}健康检查失败: {str(e)}")
if __name__ == '__main__':
app = create_app()
scheduler = init_scheduler(app)
try:
# 保持程序运行
import time
while True:
time.sleep(1)
except (KeyboardInterrupt, SystemExit):
scheduler.shutdown()
logger.info("定时任务调度器已停止")