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

如何在多Worker环境下管理Sidekiq定时任务

Sidekiq多进程定时任务的重复执行与清理问题

问题背景

我需要调度周期性任务,同时部署多个Sidekiq进程以提升吞吐量,这意味着多个容器运行bundle exec sidekiq(或sidekiqswarm),每个容器启动时都会调用Sidekiq初始化器。

初始的初始化器代码如下:

Sidekiq.configure_server do |config|
  config.periodic do |mgr|
    mgr.register("* 4 * * *", "MyJob")
    mgr.register("* 4 * * *", "MyOtherJob")
    ...
  end
end

之后重新部署并更新了定时任务配置:

Sidekiq.configure_server do |config|
  config.periodic do |mgr|
    mgr.register("* 4 * * *", "MyBetterJob")
    mgr.register("* 5 * * *", "MyOtherJob")
    ...
  end
end

核心疑问

  • 更新配置后,会不会出现MyJob和MyBetterJob都在4点运行,MyOtherJob同时在4点和5点运行的情况?
  • 如何清理旧的定时任务?这似乎会带来维护难题。
  • 如何仅声明当前所需的定时任务集合?

已探索的思路与困惑

我了解到有通过删除Redis中的键来清理定时任务的方案,但多进程同时操作会导致混乱。另外,在Leader节点的actor中嵌入定时任务管理是不是推荐做法?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:55:16