Sidekiq工人优先级设置

时间:2014-04-07 13:31:02

标签: ruby-on-rails ruby backgroundworker sidekiq

目前正在使用sidekiq运行我的后台作业。同时我一次运行10个工作岗位。这些工作不是一个小工作。完成工作需要6-8个小时。

与此同时,我需要运行一些较小的工作(需要2-3分钟)。目前,在完成上述10个工作中的任何一个工作之前,我无法运行这些工作。所以我需要等待6-8个小时才能完成这项小工作。

但是这些作业应该在添加到队列后立即运行。是否有任何选项可以阻止任何一个进程运行这种小型作业。我尝试了队列选项,但它在我的场景中也不起作用。

这是我的sidekiq配置

:concurrency: 10
:queues:
  - [web, 7]
  - [default, 3]

任何人都可以为我解决这个问题吗?

1 个答案:

答案 0 :(得分:8)

长期工作窒息了较小的工作,因为他们争夺同样的资源。

我可以建议您运行两个 sidekiq进程,每个进程使用不同的配置文件,并且每个进程都监听不同的队列:

sidekiq_long.yml

:concurrency: 10
:queues:
  - default

sidekiq_normal.yml

:concurrency: 3
:queues:
  - web

这样,一个sidekiq进程将始终可用于服务器短作业:

sidekiq -C config/sidekiq_long.yml.yml
sidekiq -C config/sidekiq_normal.yml