【发布时间】:2019-04-03 04:33:35
【问题描述】:
我在我的 Rails 应用程序中使用 Sidekiq 来处理后台作业。
sidekiq.yml
:verbose: false
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:concurrency: 5
:queues:
- ["queue1", 1]
- ["queue2", 1]
- ["queue3", 1]
- ["queue4", 1]
- ["queue5", 1]
- critical
- default
- low
max_retries: 1
我想一次只为每个队列运行一个任务。
例如:我在 queue1 中启动同一个 worker 3 次,我想处理 worker1,然后是 worker2,然后是 worker3。
我在 sidekiq.yml 中添加了带有队列名称的“1”(例如 ["queue1", 1])。我认为这种配置只会在 queue1 中运行一个工作人员。但这并没有发生。
如何在sidekiq中实现上述配置?
【问题讨论】:
-
不清楚。您希望您的 3 个工作人员以循环方式从 queue1 中挑选工作(一个工作,另外两个等待)?或者worker1在queue1上工作,worker2在queue2上工作等等?
-
我的意思是喜欢循环时尚。一个有效,另外两个等待
-
@karan 在这种情况下,为什么不为每个队列设置 1 个工作人员?
-
@MartinZinovsky 这对我来说并不好。我有更多的工人。我想限制每个队列的工作人员。
-
@SergioTulentsev 任何帮助将不胜感激
标签: ruby-on-rails background-process sidekiq