dingdanquanliucheng/backend/app/scheduler.py

51 lines
1.3 KiB
Python
Raw Normal View History

2026-06-14 16:20:04 +08:00
"""定时任务调度模块。
使用 APScheduler 在后台定时执行提醒检查等周期性任务
main.py lifespan 管理启动和关闭
"""
import logging
from apscheduler.schedulers.background import BackgroundScheduler
from backend.app.db import SessionLocal
from backend.app.services.reminder_service import reminder_service
logger = logging.getLogger(__name__)
scheduler = BackgroundScheduler()
def run_reminder_checks():
"""执行所有提醒检查(欠款、沉默客户、物流超时)。"""
session = SessionLocal()
try:
result = reminder_service.check_all(session)
logger.info("定时提醒检查完成: %s", result)
except Exception:
logger.exception("定时提醒检查异常")
finally:
session.close()
def init_scheduler():
"""初始化并启动调度器。
每日 08:30 自动执行所有提醒检查
"""
scheduler.add_job(
run_reminder_checks,
"cron",
hour=8,
minute=30,
id="reminder_checks",
replace_existing=True,
)
scheduler.start()
logger.info("定时任务调度器已启动,每日 08:30 执行提醒检查")
def shutdown_scheduler():
"""关闭调度器。"""
scheduler.shutdown(wait=False)
logger.info("定时任务调度器已关闭")