首頁  >  問答  >  主體

python - 如何解决apscheduler定时任务自动重启,导致定点执行的任务未执行完成

使用apscheduler定时执行多个任务,有的任务某个时间点执行一次,有的任务每隔一段时间执行一次;添加任务的时候使用scheduled_job装饰器,没有使用add_job方法;
现在的问题是,启动apscheduler所有的定时任务后,过一段时间,apscheduler的任务会自动重启,导致那些定点执行一次的任务没有执行完成;

执行定时任务的过程中涉及mysql查询操作,其中mysql有主从库;
从日志中查看,当定时任务查询主库的时候,apscheduler任务不会重启;而访问从库的时候,程序会重新连接数据库,定时任务就会重新加载;

难道重连mysql会导致定时任务重启????

黄舟黄舟2741 天前1368

全部回覆(2)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-17 15:03:06

    misfire_grace_time 這個參數的前提是使用可持續化的jobstore,如果使用預設記憶體的jobstore,這個參數是沒有意義的。

    一般需要使用misfire_grace_time的場景,就是但是那個持久化jobstore的服務掛掉了,任務需要被調度的時候沒有被調度成功,後期持久化的jobstore啟動了,這個任務重新被調度了(從jobstore中取得job),misfire_grace_time決定這個任務在錯過執行時間之後還需不需要執行

    回覆
    0
  • 黄舟

    黄舟2017-04-17 15:03:06

    新增misfire_grace_time的參數

    回覆
    0
  • 取消回覆