在过去的一年里,我对我的一份工作进行了大量的改动。比如在相应的模型上从after_commit
而不是after_create
触发它,以及清理逻辑和覆盖角落情况
几个月前我看到我的旧工作在我的Heroku Ruby on Rails应用程序上的Papertrail
日志中一遍又一遍地重试。新的很好,我相信我的修改已经修复了任何问题。问题是如何停止所有这些旧工作,为什么我在Sidekiq
用户界面上看不到它们? Sidekiq UI只显示了许多已完成的作业,但是0失败,死亡,忙碌或入队。它说0但我看到日志正在流淌。
我记录了工作ID,但已经看到了you cannot kill a specific job。我已经多次重启我的服务器而没有运气。他们每天都会再试一次。
我应该注意到最近的所有工作都很好。在过去一个月左右的任何事情都不会重复。在具有after_create
触发作业的5000个对象中,只有1-60个正在重试。其他人过去了,很好
如果您知道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
如果由于作业是空中无法删除,请停止工作进程(即关闭它们)几分钟,然后运行上述操作。