gpt4 book ai didi

ruby-on-rails - 多种环境的 Sidekiq 配置

转载 作者:数据小太阳 更新时间:2023-10-29 06:35:33 25 4
gpt4 key购买 nike

我查看了多个来源并尝试了各种方案,但无法解决这个问题。请指出正确的方向。

和每个人一样,我有 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]

有了这个,我希望当我用命令启动sidekiq时

RAILS_ENV=#{rails_env} bundle exec sidekiq -C config/sidekiq.yml

它会从配置文件中获取所有值,并使用适当的队列和位于 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

有了这个,队列创建正常,但日志文件没有创建或写入,我需要为所有 3 个环境复制这段代码。

让 sidekiq 为我的设置无缝工作的最佳方法是什么提前感谢您的帮助!!!

最佳答案

使用-e选项

bundle exec sidekiq -e beta -C config/sidekiq.yml

如果所有环境(开发、暂存和生产)都在同一台服务器上,则使用命名空间。在你的 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

关于ruby-on-rails - 多种环境的 Sidekiq 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15260634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com