ruby-on-rails - Sidekiq worker优先级设置

标签 ruby-on-rails ruby backgroundworker sidekiq

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

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

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

这是我的sidekiq配置

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

谁能给我这个问题的解决方案?

最佳答案

长作业会扼杀较小的作业,因为它们争夺相同的资源。

我可以建议您运行两个 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

关于ruby-on-rails - Sidekiq worker优先级设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22913990/

相关文章:

ruby-on-rails - 使用部分干燥新表单和编辑表单的最佳实践

ruby-on-rails - Ruby:在字符串中搜索多个搜索词

ruby-on-rails - 嵌套表单 Rails

ruby-on-rails - 在 Rails 中使用电子表格 gem 显示公式的值

ruby - 如何使用 Ruby 学习 TDD?

ruby-on-rails - 模型名称出现在我的 Rails 验证错误中

c# - 事件不按顺序发生

c# - 如何让 backgroundworker 在 WPF 应用程序中工作

c# - System.Windows.pdb 未加载 - Windows Phone

javascript - 为什么测试中文件中的 js 不起作用?