scheduler.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. """
  2. 定时任务调度模块
  3. 提供定时任务的调度和管理功能
  4. """
  5. from apscheduler.schedulers.background import BackgroundScheduler
  6. from apscheduler.triggers.cron import CronTrigger
  7. from utils.logger import logger
  8. from utils.file_utils import clean_old_files
  9. def init_scheduler(output_folder):
  10. """
  11. 初始化调度器,添加定时清理任务
  12. 参数:
  13. output_folder: 输出文件根目录
  14. 返回:
  15. scheduler: 已启动的调度器对象
  16. """
  17. logger.info("初始化定时任务调度器")
  18. scheduler = BackgroundScheduler()
  19. # 每天凌晨2点执行清理任务
  20. scheduler.add_job(
  21. lambda: clean_old_files(output_folder),
  22. trigger=CronTrigger(hour=2, minute=0),
  23. id='clean_old_files_job',
  24. name='清理前一天的输出文件',
  25. replace_existing=True
  26. )
  27. scheduler.start()
  28. logger.info("定时清理任务已启动,将在每天凌晨2:00执行")
  29. # 添加关闭时的清理
  30. import atexit
  31. def shutdown_handler():
  32. scheduler.shutdown()
  33. logger.info("应用程序关闭,调度器已停止")
  34. atexit.register(shutdown_handler)
  35. return scheduler