我最近不得不优先考虑我的Sidekiq队列(在我只使用default
队列之前)。
所以我写了几个应该在不同队列上执行的作业。
我的sidekiq.yml
:
:queues:
- slack_notifier
- invoicing
- default
deploy.rb
(卡皮斯特拉诺):
# ...
set :sidekiq_config, "#{current_path}/config/sidekiq.yml"
# probably below line does same thing as above one
set :sidekiq_options_per_process, ['--queue slack_notifier --queue invoicing --queue default']
# ...
我可以在部署时看到它正在被使用:
01:32 sidekiq:start
01 $HOME/.rbenv/bin/rbenv exec bundle exec sidekiq --index 0 --pidfile /home/ubuntu/cap/shared/tmp/pids/sidekiq.pid --environment production --logfile /home/ubuntu/cap/shared/log/sidekiq.log --config /home/ubuntu/cap/current/config/sidekiq.yml --queue slack_notifier --queue invoicing --queue default --daemon
Sidekiq正在运行:
ps aux | grep '[s]idekiq'
#=> ubuntu 716 16.4 2.1 668604 176860 ? Sl 07:31 14:18 sidekiq 4.2.6 cap [1 of 1 busy]
现在,当我开始工作时,他们似乎暂时停止了。
不确定我是否可以更好地描述问题。当我清除两个优先级队列(slack_notifier
和invoicing
)时,默认仍然无法处理作业。
答案 0 :(得分:0)
也许您可以为所有队列运行多个进程,将单独的队列放在单独的进程中以处理sidekiq作业。您的配置将如下所示:
set :sidekiq_processes, 3
set :sidekiq_options_per_process, ['--queue slack_notifier', '--queue invoicing', '--queue default']
我认为这不会停止sidekiq,但是所有事情的前提是您的sidekiq进程已得到充分优化,因此它们不会占用比预期更多的内存。