【问题标题】:How to set a global retry limit in sidekiq?如何在sidekiq中设置全局重试限制?
【发布时间】:2020-10-31 00:27:08
【问题描述】:

我想在 Sidekiq 中配置一个全局重试限制来限制重试次数。默认情况下 Sidekiq limits the number of retries to 25 但如果未在 Worker 上明确指定限制,我想为所有 Worker 将其设置得较低,以防止过长的默认最大重试时间。

【问题讨论】:

    标签: ruby-on-rails ruby sidekiq


    【解决方案1】:
    Sidekiq.default_worker_options['retry'] = 10
    

    https://github.com/mperham/sidekiq/wiki/Advanced-Options#workers

    【讨论】:

    • 除了 @mike-perham 是库的作者并按照他所说的去做之外,只改变键 retry 可能是有意义的,如这里所述,而不是破坏整个哈希。
    【解决方案2】:

    您也可以在 sidekiq.yml

    中进行配置
    :max_retries: 10
    :queues:
      - queue_1
      - queue_2
    

    参考文档here

    【讨论】:

      【解决方案3】:

      这个值是 stored in options 并且 (AFAIK) 没有漂亮的设置器,所以你去吧:

      Sidekiq.options[:max_retries] = 5
      

      它可能在中间件初始化程序as well 中设置为RetryJobs

      【讨论】:

        【解决方案4】:

        您可以在初始化程序中使用Sidekiq.default_worker_options。所以设置一个下限是

        Sidekiq.default_worker_options = { retry: 5 }
        

        【讨论】:

          【解决方案5】:

          目前正在努力进行设置,以限制我们的暂存环境产生的错误噪音量(为了尽量保持在我们的错误处理服务限制以下)。更改金额时,现在的键似乎是max_retries,而retry 是一个布尔值,它是应该重试还是直接进入“死”队列。

          https://github.com/mperham/sidekiq/wiki/Error-Handling#automatic-job-retry

          这是它在我的 Sidekiq 配置文件中寻找的内容:

          if Rails.env.staging?
            Sidekiq.default_worker_options['max_retries'] = 5
          end
          

          更新:可能是我自己的困惑,但出于某种原因,default_worker_options 似乎并没有为我持续工作。我最终把它改成了这个,它按我希望的那样工作。失败的作业直接进入Dead 队列:

          Sidekiq.options[:max_retries] = 0
          

          【讨论】:

            猜你喜欢
            • 2022-08-24
            • 1970-01-01
            • 2023-04-06
            • 2016-01-13
            • 1970-01-01
            • 2020-03-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多