如何在多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
相关产品推荐
相关产品推荐

