Python Cron定时任务执行时间偏差(晚1小时)的解决方案求助
Python Cron定时任务执行时间偏差(晚1小时)的解决方案求助
你遇到的问题其实是*/4这种cron小时表达式的逻辑导致的——它是从0点开始每隔4小时触发,所以自然会是00:59、04:59、08:59...和你想要的起始时间23:59完全对不上。
这里给你两个靠谱的解决方案:
方案一:直接指定目标小时列表
最直观的方式就是把需要触发的小时数明明白白列出来,这样cron就会严格在你指定的时间执行:
scheduler.add_job( func=myfunc, trigger="cron", day='*', hour="23,3,7,11", # 直接列出所有需要触发的小时 minute=59, second=0, )
这个写法完全符合你的需求:23:59首次触发,之后每隔4小时(3:59、7:59、11:59...)循环执行,不会有时间偏差。
方案二:利用时间偏移调整起始点
如果你不想手动列所有小时(比如后续可能需要调整间隔),也可以通过interval触发器配合起始时间来实现,这样更灵活:
scheduler.add_job( func=myfunc, trigger="interval", hours=4, start_date="2024-01-01 23:59:00", # 指定首次触发的时间点 )
用interval触发器的好处是,只要首次时间设置正确,之后就会严格每隔4小时执行一次,不需要担心cron表达式的起始逻辑问题。
另外小提醒:可以检查下你的调度器是否设置了正确的时区,有时候时区偏差也会悄悄导致执行时间不对哦!
备注:内容来源于stack exchange,提问作者Nicolas REY
相关产品推荐
相关产品推荐

