去年,我对其中一个工作的过程进行了大量修改。比如在相应的模型上从after_commit
而不是after_create
触发它,以及清理逻辑和覆盖边角情况
我在几个月前看到我的旧工作在我的Heroku Ruby on Rails应用程序的Papertrail
日志中一遍又一遍地重试。新的很好,我相信我的修改已经修复了任何问题。问题是如何停止所有这些旧作业,为什么我在Sidekiq
UI上看不到它们? Sidekiq UI只显示了许多已完成的作业,但是0失败,死亡,忙碌或入队。它说0但我看到日志正在流淌。
我记录了作业ID,但看到了you cannot kill a specific job。我已经多次重启我的服务器而没有运气。他们每天都会再试一次。
我应该注意到最近的所有工作都很好。在过去一个月左右的任何事情都不会重复。在具有after_create
触发作业的5000个对象中,只有1-60个正在重试。其他人通过并且很好
答案 0 :(得分:1)
如果您知道jid
,则可以从rails控制台执行此操作:
queue = Sidekiq::Queue.new("my_queue")
queue.each do |job|
job.delete if job.jid == 'abcdef1234567890'
end
如果它在重试集中,你可以这样做:
query = Sidekiq::RetrySet.new
query.each do |job|
job.delete if job.jid == 'abcdef1234567890'
end
如果由于作业是空运而无法删除,请停止工作进程(即关闭它们)几分钟,然后运行上述步骤。