Zao’s Blog
感谢上天,我不是一个人在战斗!
炒股开户,证券网上开户,不限资金佣金万1.5包含规费,量大手续费万1.2,QQ 312011170

最近运用python的apscheduler模块在服务器上执行定时任务,偶尔会出现Run time was missed的问题。具体现象:窗口报错内容为
Run time of job "job_ start (trigger: cron[day_ of_ week=' mon-fri', hour=' 8',minute=' 40' ],next run at: 2022-05-17 08:40:00 CST)" was missed by 0:00:01. 595765
意思是:距离下次运行时间,错过了1秒,所以就没有执行任务。

经过多次网上搜索,排除一些错误的答案,最终找到解决办法:
在add_job()中添加参数misfire_grace_time:主要就是为了解决这个was missed by 这个报错,添加允许容错的时间,单位是秒;参数coalesce:如果系统因某些原因没有执行任务,导致任务累计,为True则只运行最后一次,为False 则累计的任务全部跑一遍。
另外,misfire_grace_time和coalesce两个参数可以以字典形式赋值给job_defaults参数,用于实例化BlockingScheduler。代码如下:

sched = BlockingScheduler(timezone='Asia/Shanghai', job_defaults={'misfire_grace_time': 600, 'coalesce': True})

发表评论





改变评论框高度:增大(+) | 减小(-)

DO NOT Fill!