如何删除已无对应代码的每分钟运行的Sidekiq定时任务?
解决Sidekiq残留定时任务的方法
1. 清理Redis中的旧任务缓存
Sidekiq的定时任务(如使用Sidekiq-Cron)会将配置存储在Redis中,删除代码里的任务后,Redis内的旧配置仍会存在,需手动清除:
- 进入Redis命令行:
redis-cli - 列出所有Sidekiq-Cron相关键:
KEYS sidekiq:cron:* - 删除对应任务的键:
DEL sidekiq:cron:[你的任务名称]
若不确定任务名称,可直接清空Sidekiq-Cron的任务缓存:DEL sidekiq:cron:jobs
2. 重启Sidekiq进程
正在运行的Sidekiq进程可能仍持有旧任务配置,重启服务让新配置生效:
- 停止Sidekiq:
bundle exec sidekiqctl stop tmp/pids/sidekiq.pid(路径根据你的实际部署调整) - 重启Sidekiq:
bundle exec sidekiq -d -L log/sidekiq.log -P tmp/pids/sidekiq.pid
3. 清理失败任务队列
已失败的任务可通过两种方式处理:
- 在Sidekiq Web UI中找到失败任务列表,批量勾选后删除
- 执行rake任务批量清理:
bundle exec rake sidekiq:clear:failed
4. 确认代码变更已部署
确保删除定时任务的代码修改已经同步到生产环境,避免旧代码重新调度任务。
内容的提问来源于stack exchange,提问作者Ouska
相关产品推荐
相关产品推荐

