如何在 sidekiq 中设置全局重试限制?

How to set a global retry limit in sidekiq?

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

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

Sidekiq.options[:max_retries] = 5

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

Sidekiq.default_worker_options['retry'] = 10

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

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

Sidekiq.default_worker_options = { retry: 5 }

您也可以在sidekiq.yml

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

参考文档 here

目前正在努力设置它以限制我们的暂存环境产生的错误噪声量(为了尽量保持在我们的错误处理服务限制之下)。似乎现在更改数量时的关键是 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