19

複数のソースを見て、さまざまなシナリオを試しましたが、これを解決できなかったため、問題が発生しました。私を正しい方向に向けてください。

みんなと同じように、私には 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 をシームレスに動作させる最良の方法は何ですか?事前に助けてくれてありがとう!!!

4

3 に答える 3

20

-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     
于 2013-10-23T11:25:57.417 に答える
8

-eを使用して環境を渡します。

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

答えてくれたmperhamに感謝します。

于 2013-03-07T19:49:13.660 に答える
0

ログと環境のサポートを設定するために使用します。

bundle exec sidekiq -d -L log/sidekiq.log -e production -C config/sidekiq.yml
于 2016-08-11T13:17:51.840 に答える