我查看了多个来源并尝试了各种情况,但无法解决问题。请指点我正确的方向。
和所有人一样,我有三个环境(开发、暂存和生产)。
我在我的sidekiq.yml文件中有以下内容
# Options here can still be overridden by cmd line args.
# sidekiq -C config.yml
---
:verbose: false
:namespace: xyz
:logfile: log/sidekiq.log
:concurrency: 25
:strict: false
:pidfile: tmp/pids/sidekiq.pid
:queues:
- [stg_xyz_tests_queue, 10]
- [stg_default_xyz_queue, 2]
- [stg_xyz_default_queue, 3]
development:
:verbose: true
:concurrency: 15
:queues:
- [dev_xyz_queue, 10]
- [dev_default_xyz_queue, 2]
- [dev_xyz_default_queue, 3]
staging:
:queues:
- [stg_xyz_queue, 10]
- [stg_default_xyz_queue, 2]
- [stg_xyz_default_queue, 3]
production:
:queues:
- [prod_xyz_queue, 10]
- [prod_default_xyz_queue, 2]
- [prod_xyz_default_queue, 3]
希望通过这个命令启动Sidekiq:
RAILS_ENV=#{rails_env} bundle exec sidekiq -C config/sidekiq.yml
它应该会从配置文件中获取所有值,并在log/sidekiq.log上启动适当的队列和日志文件,但事实并非如此。无论使用哪个环境,Sidekiq都只创建stg_xyz_tests_queue、stg_default_xyz_queue和stg_xyz_default_queue。
我尝试过的另一种方法是在config/environments/development.rb中使用以下代码:
#configure Sidekiq for dev environment
Sidekiq.configure_server do |config|
config.options[:namespace] = "xyz"
config.options[:concurrency] = 25
config.options[:verbose] = true
config.options[:strict] = false
config.options[:logfile] = "log/sidekiq.log"
config.options[:pidfile] = "tmp/pids/sidekiq.pid"
queues = Array.new
10.times do
queues.push "dev_xyz_queue"
end
2.times do
queues.push "dev_default_xyz_queue"
end
3.times do
queues.push "dev_xyz_default_queue"
end
config.options[:queues] = queues
puts "Sidekiq server config options for development => #{config.options.to_yaml}"
end
使用此代码,队列已经成功创建,但是日志文件没有被创建或写入,我需要将此代码复制到所有三个环境中。
如何使Sidekiq在我的设置中无缝工作?非常感谢您的帮助!!!