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

Heroku Scheduler任务重叠问题及解决方案实践

解决Heroku Scheduler定时任务重叠问题

问题场景

我在Heroku基础套餐上用Scheduler配置了6个定时任务,分别在每小时的:00、:10、:20、:30、:40、:50触发。部分任务(比如整点启动的任务)耗时可达15分钟,导致后续任务(比如10分启动的任务)在前序任务未完成时就被执行,引发任务重叠问题。

尝试过的无效方案

  • 想在Python代码中判断是否有任务正在运行,若存在则跳过新任务,但不知道具体实现方式
  • 尝试执行命令heroku ps:scale scheduler=1限制调度器实例数量(通过Procfile配置),但该操作未生效

最终可行方案

通过在数据库中创建一张任务状态记录表来管控任务执行,表结构包含以下字段:

  • started_at:任务启动时间
  • finished_at:任务结束时间
  • status:任务运行状态(例如「运行中」「已完成」)

任务执行逻辑调整为:

  1. 启动前查询状态表,检查是否存在状态为「运行中」且finished_at为空的任务
  2. 若存在上述任务,当前任务直接退出,不执行后续逻辑
  3. 若不存在,将当前任务的started_at设为当前时间、status设为「运行中」,插入/更新到状态表
  4. 任务执行完成后,更新该任务的finished_at为当前时间、status设为「已完成」

感谢@ceejayoz的帮助。


内容的提问来源于stack exchange,提问作者AlfonsoAG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:00:02