【问题标题】:Run callback before (or during) Sidekiq retry在 Sidekiq 重试之前(或期间)运行回调
【发布时间】:2019-11-27 17:30:41
【问题描述】:

我希望在我的 Sidekiq 辅助作业发生重试之前(或何时)运行回调。我们将作业的状态存储为属性(排队、执行、完成等),重试不会自动重置此状态。我需要一种方法来运行回调,在重试作业排队之前将重试作业的状态设置回queued。例如:

before_retry do 
  self.status = "queued"
end

我阅读了另一篇文章 (Sidekiq Pro callback when batch is retried?),建议使用某种服务器中间件来检测重试并运行回调,但我不完全知道这是否可行,因为我觉得任何中间件的重试已经排队抓住它。还有其他选择吗?提前致谢!

【问题讨论】:

    标签: ruby-on-rails ruby backgroundworker sidekiq


    【解决方案1】:

    rescue 在perform 中可以工作吗?

    def perform
      ...
    rescue YourException
      self.status = "queued"
      raise
    end
    

    raiseing 再次重试该作业。

    【讨论】:

    • 我喜欢这个想法,在正常情况下这可能会奏效,但是,我们处理 sidekiq 作业的方式是在通用类中使用自定义错误处理构建的,这会与此冲突。这就是为什么我们不能做这样的事情的主要原因。
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    相关资源
    最近更新 更多