【问题标题】:how to retry sidekiq job without raising exceptions?如何在不引发异常的情况下重试sidekiq工作?
【发布时间】:2019-03-21 19:37:38
【问题描述】:

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

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

它很好,但有一个问题:重试计数。潜在地,每次都发生 stuff_happening,这项工作会无限期地安排吗?有没有办法确保它只会被安排固定次数然后停止?

【问题讨论】:

  • 我认为sidekiq会自动重试github.com/mperham/sidekiq/wiki/…
  • 您能分享更多关于“不引发异常”的信息吗? Sidekiq 的重试机制与异常相关。因此,解决您的异常情况可能会好得多。

标签: ruby sidekiq


【解决方案1】:

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

您需要通过以下方式传递状态(已经发生的重试次数):

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

【讨论】:

    猜你喜欢
    • 2018-04-03
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 2021-12-26
    • 1970-01-01
    相关资源
    最近更新 更多