鱼C论坛

 找回密码
 立即注册
查看: 289|回复: 1

Apscheduler库求解,第二天运行任务就不准时了是为什么?

[复制链接]
发表于 2024-4-24 23:38:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
schedule = BlockingScheduler()
    schedule.add_job(job, 'cron', hour='9', minute='30', misfire_grace_time=60000)
    schedule.add_job(job, 'cron', hour='10', minute='05', misfire_grace_time=60000)
    schedule.add_job(job, 'cron', hour='13', minute='50', misfire_grace_time=60000)
    schedule.add_job(job, 'cron', hour='15', minute='50', misfire_grace_time=60000)
    schedule.start()

我用apscheduler设置定时任务,分别在上面代码时间段,第一天启动任务很准时,没有关闭程序,第二天本应在10点05分运行的任务为什么延时一个半小时,在11点33分启动了,这是为什么???我也就搞了两个requests请求,数据量非常非常少啊,获取第一个请求的返回的数据后,才去请求第二个网址。任务启动应该不会特别难吧,不耗时应该。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-24 23:38:32 | 显示全部楼层
你遇到的问题可能是由于任务错过了预定的执行时间而导致的延迟。这可能是因为任务在实际执行之前进行了其他操作,或者系统负载较高导致任务无法准时执行。在使用apscheduler库时,可以通过增加misfire_grace_time参数来容忍一定的错过执行时间的情况。

然而,在你的代码中,你给每个任务都设置了相同的misfire_grace_time参数。这可能会导致后面的任务在错过执行时间后被错过的时间所累计,从而导致第二天任务延迟一个半小时。

为了解决这个问题,你可以为每个任务设置不同的misfire_grace_time参数。比如,你可以将第一个任务的misfire_grace_time设置为60000,第二个任务设置为300000(5分钟),第三个和第四个任务依次递增。这样可以确保每个任务具有不同的容忍错过执行时间的阈值,减少延迟发生的可能性。

修正后的代码如下所示:
schedule = BlockingScheduler()
schedule.add_job(job, 'cron', hour='9', minute='30', misfire_grace_time=60000)
schedule.add_job(job, 'cron', hour='10', minute='05', misfire_grace_time=300000)
schedule.add_job(job, 'cron', hour='13', minute='50', misfire_grace_time=600000)
schedule.add_job(job, 'cron', hour='15', minute='50', misfire_grace_time=900000)
schedule.start()

请注意,根据你的实际需求,你可能需要调整misfire_grace_time参数的数值。增加这个参数的值可以增加任务容忍的连续错过执行时间的时间。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 16:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表