gpt4 book ai didi

sidekiq - 如何控制每个队列的并发性?

转载 作者:行者123 更新时间:2023-12-04 04:21:24 25 4
gpt4 key购买 nike

Sidekiq 文档建议我只能控制 sidekiq 的全局并发性,而不是每个队列。我在这里提出一个问题,希望有一个针对每个队列并发设置的解决方案。一些 3rd 方服务就是不接受高并发性,并且仅仅为了那些而限制整个 sidekiq 是痛苦的。

我在 sidekiq 3.3

最佳答案

使用 Heroku,我能够通过在 Procfile 中设置环境变量然后在 sidekiq.rb 中使用它来控制每个队列的并发性。初始化程序:

Sidekiq.configure_server do |config|
config.options[:concurrency] = (ENV['SIDEKIQ_WORKERS_PROCFILE'] || ENV['SIDEKIQ_WORKERS'] || 1).to_i
...
end
SIDEKIQ_WORKERS_PROCFILE在 Procfile 中为一个队列设置 - 其他队列使用 SIDEKIQ_WORKERS这是在 Heroku 设置中设置的。

不过,我不确定这是否对您的场景有帮助。

更新

为了澄清这一点, 这个想法涉及在 Heroku 上部署,每个队列都在单独的 dyno 中处理。 这使它仍然使用全局 sidekiq 并发设置,dynos 只是在我的用例中完成工作的一种解决方法。

我的 Procfile看起来像这样:
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
default: env HEROKU_PROCESS=default bundle exec sidekiq -c 5
important: env HEROKU_PROCESS=important bundle exec sidekiq -q important -c 5
instant: env HEROKU_PROCESS=instant bundle exec sidekiq -q instant -c 5
matrices: env HEROKU_PROCESS=matrices SIDEKIQ_WORKERS_PROCFILE=1 bundle exec sidekiq -q matrices -c 1

您可以看到 matrices worker 有 SIDEKIQ_WORKERS_PROCFILE变量设置为 1 - 这使得可以使用具有不同并发性的队列运行工作程序。该变量由 sidekiq.rb 读取初始化程序。请注意,还有 -c 1选项 - 但是我不知道这是否重要。

初始化程序已经在那里了。

全部设置完毕,在 sidekiq 仪表板中我可以看到 matrices queue 正在运行 1 个线程,而其他使用 3 个( SIDEKIQ_WORKERS 变量在 Heroku 设置环境变量中设置为 3):

enter image description here

关于sidekiq - 如何控制每个队列的并发性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28792190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com