【发布时间】:2020-10-31 00:27:08
【问题描述】:
我想在 Sidekiq 中配置一个全局重试限制来限制重试次数。默认情况下 Sidekiq limits the number of retries to 25 但如果未在 Worker 上明确指定限制,我想为所有 Worker 将其设置得较低,以防止过长的默认最大重试时间。
【问题讨论】:
标签: ruby-on-rails ruby sidekiq
我想在 Sidekiq 中配置一个全局重试限制来限制重试次数。默认情况下 Sidekiq limits the number of retries to 25 但如果未在 Worker 上明确指定限制,我想为所有 Worker 将其设置得较低,以防止过长的默认最大重试时间。
【问题讨论】:
标签: ruby-on-rails ruby sidekiq
Sidekiq.default_worker_options['retry'] = 10
https://github.com/mperham/sidekiq/wiki/Advanced-Options#workers
【讨论】:
retry 可能是有意义的,如这里所述,而不是破坏整个哈希。
【讨论】:
这个值是 stored in options 并且 (AFAIK) 没有漂亮的设置器,所以你去吧:
Sidekiq.options[:max_retries] = 5
它可能在中间件初始化程序as well 中设置为RetryJobs。
【讨论】:
您可以在初始化程序中使用Sidekiq.default_worker_options。所以设置一个下限是
Sidekiq.default_worker_options = { retry: 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
【讨论】: