首页 > 解决方案 > Sidekiq 不使用 Docker 处理排队作业设置

问题描述

我在我的 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

ps辅助| grep sidekiq

root        48  0.0  0.0   4400  1264 ?        Ss   13:06   0:00 runsv sidekiq
root     15753  1.0  0.0   4628   924 ?        S    13:14   0:00 /bin/sh /root/app/config/docker/sidekiq.sh
root     15754 35.0  0.0  78136 11408 ?        R    13:14   0:00 ruby /usr/local/rvm/gems/ruby-2.6.2/bin/ruby_executable_hooks /usr/local/rvm/gems/ruby-2.6.2/bin/sidekiq -C config/sidekiq.yml -e qa -L log/sidekiq.log

Sidekiq 可以在本地环境中处理作业。但是当我在 qa 环境中部署时,sidekiq 作业被添加到队列中并且未处理。

我可以在 redis-cli 中看到队列名称

我应该怎么做才能处理队列中的作业?

版本:-

sidekiq 5.2.5
Rails 5.2.2

初始化程序/sidekiq.rb

redis_config = {
  url: "redis://#{Rails.configuration.redis.fetch('host')}:#{Rails.configuration.redis.fetch('port')}/#{Rails.configuration.redis.fetch('db')}",
  namespace: "myapp"
}

Sidekiq.configure_server do |config|
  config.redis = redis_config 
end

Sidekiq.configure_client do |config|
  config.redis = redis_config
end

标签: ruby-on-railsdockersidekiq

解决方案


推荐阅读