如何在不引发异常的情况下重试sidekiq作业?

时间:2019-03-21 09:43:29

标签: ruby sidekiq

简单的东西,我需要有一种方法可以重试作业而不会引起异常。 我知道我可以使用类似的东西

def perform
    if stuff_happening
        perform_in(2.min)
        return
    end
end

及其优点,但是存在一个问题:重试计数。潜在地,每次都填充事件,此作业将无限期地进行调度?有没有一种方法可以确保仅将其调度固定的次数然后停止?

1 个答案:

答案 0 :(得分:0)

边注:我们在Ruby中使用2个空格来缩进。

您需要使状态(重试次数已经发生)通过:

def perform(attempts_left = 10)
  if stuff_happening && attempts_left > 0
    perform_in(2.min, attempts_left - 1)
    return
  end
end