老Sidekiq工作永远重试。在Sidekiq UI上没有可见性

问题描述 投票:2回答:1

在过去的一年里,我对我的一份工作进行了大量的改动。比如在相应的模型上从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个正在重试。其他人过去了,很好

ruby-on-rails ruby heroku backgroundworker sidekiq
1个回答
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

如果由于作业是空中无法删除,请停止工作进程(即关闭它们)几分钟,然后运行上述操作。

© www.soinside.com 2019 - 2024. All rights reserved.