51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
"""定时任务调度模块。
|
|
|
|
使用 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("定时任务调度器已关闭")
|