use*_*078 16 ruby ruby-on-rails sidekiq
我已经查看了多个来源并尝试了各种方案,但无法解决这个问题.请指出我正确的方向.
像每个人一样,我有3个环境(开发,分期和生产).
我在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]
Run Code Online (Sandbox Code Playgroud)
有了这个,我希望当我用命令启动sidekiq时
RAILS_ENV=#{rails_env} bundle exec sidekiq -C config/sidekiq.yml
Run Code Online (Sandbox Code Playgroud)
它会从配置文件中获取所有值,并在log/sidekiq.log中使用相应的队列和日志文件启动sidekiq,但这不起作用.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
Run Code Online (Sandbox Code Playgroud)
有了这个,队列被创建好了,但是没有创建或写入日志文件,我需要为所有3个环境复制这个代码.
让sidekiq无缝地为我的设置工作的最佳方法是什么感谢您的帮助!
Ran*_*avi 19
使用-e选项
bundle exec sidekiq -e beta -C config/sidekiq.yml
Run Code Online (Sandbox Code Playgroud)
如果所有环境(开发,登台和生产)都在同一服务器上,则使用命名空间.在initializers/sidekiq.rb文件中,
Sidekiq.configure_server do |config|
config.redis = { url: 'redis://localhost:6379/0', namespace: "sidekiq_app_name_#{Rails.env}" }
end
Sidekiq.configure_client do |config|
config.redis = { url: 'redis://localhost:6379/0', namespace: "sidekiq_app_name_#{Rails.env}" }
end
Run Code Online (Sandbox Code Playgroud)
使用-e传递环境.
bundle exec sidekiq -e production -C config/sidekiq.yml
Run Code Online (Sandbox Code Playgroud)
感谢mperham的回答.
归档时间: |
|
查看次数: |
21517 次 |
最近记录: |