如何重新出现在仪表板中以获得sidekiq重试作业?

时间:2017-09-20 17:12:58

标签: ruby-on-rails sidekiq sidekiq-monitor

似乎我的工作失败了,但是当它失败时它仍然存在,然后创建另一个像自己一样的工作。请注意,在我的屏幕截图中,顶部项和底部项是相同的,参数' 836898'。这是我需要改变的某种配置吗?

我指的是显示的重复条目,不一定禁用重试。

Arguments 836898 failing

3 个答案:

答案 0 :(得分:1)

我认为你应该首先加入gem 'sidekiq-unique-jobs'

那么你的工作人员应该是这样的

class CleanupWorker
  include Sidekiq::Worker
  sidekiq_options queue: :cleanup, unique: :until_executed, retry: 4, failures: :exhausted, backtrace: true

  sidekiq_retry_in do |count|
    10 * (count + 1)
  end

  def perform(args)
  end
end

unique: :until_executed这意味着作业必须是唯一的,只要它仍在队列中或正在执行。 retries: 4unique: :until_executed之间的组合可以解决问题。因为据我所知,当作业崩溃时,如果重试不是假,那么作业将返回队列。

这是这个独特的工作宝石仓库的link

答案 1 :(得分:0)

NickM的答案是对的。但是,它将禁用所有sidekiq工作程序的重试。根据每种情况,我建议在每个类中禁用它,如:

Nav

或许,只需限制重试次数,如:

class NonRetryableWorker
  include Sidekiq::Worker
  sidekiq_options retry: false

  def perform
  end
end

您可以查看更多信息here

答案 2 :(得分:0)

重试中有两个条目,因为它们是两个不同的作业。你可以创建相同的"只有内部作业ID不同的作业(具有相同的类和参数)。