You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:53:03