__init__.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. from app.tasks.pl_personnel_age import refresh_personnel_ages_job
  21. scheduler.add_job(
  22. check_customer_protect_time,
  23. "cron", hour=1, minute=0,
  24. id="check_customer_protect_time",
  25. replace_existing=True,
  26. )
  27. scheduler.add_job(
  28. refresh_personnel_ages_job,
  29. "cron", hour=1, minute=0,
  30. id="refresh_personnel_ages",
  31. replace_existing=True,
  32. )
  33. scheduler.add_job(
  34. auto_generate_monthly_plans_job,
  35. "cron", day=1, hour=1, minute=30,
  36. id="db_auto_generate_monthly_plans",
  37. replace_existing=True,
  38. )
  39. scheduler.add_job(
  40. remind_customer_recycle,
  41. "cron", hour=9, minute=0,
  42. id="remind_customer_recycle",
  43. replace_existing=True,
  44. )
  45. scheduler.add_job(
  46. pool_recovery_job,
  47. "cron", hour=2, minute=0,
  48. id="pool_recovery_job",
  49. replace_existing=True,
  50. )
  51. scheduler.add_job(
  52. warn_customer_recycle,
  53. "cron", hour=10, minute=0,
  54. id="warn_customer_recycle",
  55. replace_existing=True,
  56. )
  57. scheduler.add_job(
  58. scan_pl_cert_expiry_job,
  59. "cron", hour=8, minute=0,
  60. id="scan_pl_cert_expiry",
  61. replace_existing=True,
  62. )
  63. logger.info(
  64. "已注册定时任务: check_customer_protect_time(01:00), "
  65. "refresh_personnel_ages(01:00), "
  66. "db_auto_generate_monthly_plans(每月1日01:30), "
  67. "pool_recovery_job(02:00), remind_customer_recycle(09:00), "
  68. "warn_customer_recycle(10:00), scan_pl_cert_expiry(08:00)"
  69. )
  70. def shutdown_scheduler():
  71. if scheduler.running:
  72. scheduler.shutdown(wait=False)
  73. logger.info("定时任务调度器已关闭")
  74. __all__ = [
  75. "scheduler",
  76. "init_scheduled_tasks",
  77. "shutdown_scheduler",
  78. ]