__init__.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. """定时任务模块"""
  2. import logging
  3. from apscheduler.schedulers.background import BackgroundScheduler
  4. logger = logging.getLogger(__name__)
  5. scheduler = BackgroundScheduler()
  6. def init_scheduled_tasks(get_db_session):
  7. """初始化定时任务"""
  8. if scheduler.running:
  9. return
  10. scheduler.start()
  11. logger.info("定时任务调度器已启动")
  12. from app.tasks.customer_pool import (
  13. check_customer_protect_time,
  14. pool_recovery_job,
  15. remind_customer_recycle,
  16. warn_customer_recycle,
  17. )
  18. from app.tasks.db_auto_plan import auto_generate_monthly_plans_job
  19. from app.tasks.pl_cert_expiry import scan_pl_cert_expiry_job
  20. scheduler.add_job(
  21. check_customer_protect_time,
  22. "cron", hour=1, minute=0,
  23. id="check_customer_protect_time",
  24. replace_existing=True,
  25. )
  26. scheduler.add_job(
  27. auto_generate_monthly_plans_job,
  28. "cron", day=1, hour=1, minute=30,
  29. id="db_auto_generate_monthly_plans",
  30. replace_existing=True,
  31. )
  32. scheduler.add_job(
  33. remind_customer_recycle,
  34. "cron", hour=9, minute=0,
  35. id="remind_customer_recycle",
  36. replace_existing=True,
  37. )
  38. scheduler.add_job(
  39. pool_recovery_job,
  40. "cron", hour=2, minute=0,
  41. id="pool_recovery_job",
  42. replace_existing=True,
  43. )
  44. scheduler.add_job(
  45. warn_customer_recycle,
  46. "cron", hour=10, minute=0,
  47. id="warn_customer_recycle",
  48. replace_existing=True,
  49. )
  50. scheduler.add_job(
  51. scan_pl_cert_expiry_job,
  52. "cron", hour=8, minute=0,
  53. id="scan_pl_cert_expiry",
  54. replace_existing=True,
  55. )
  56. logger.info(
  57. "已注册定时任务: check_customer_protect_time(01:00), "
  58. "db_auto_generate_monthly_plans(每月1日01:30), "
  59. "pool_recovery_job(02:00), remind_customer_recycle(09:00), "
  60. "warn_customer_recycle(10:00), scan_pl_cert_expiry(08:00)"
  61. )
  62. def shutdown_scheduler():
  63. if scheduler.running:
  64. scheduler.shutdown(wait=False)
  65. logger.info("定时任务调度器已关闭")
  66. __all__ = [
  67. "scheduler",
  68. "init_scheduled_tasks",
  69. "shutdown_scheduler",
  70. ]