2013-03-07 1 views
16

여러 소스를보고 여러 시나리오를 시도했지만이 문제를 해결할 수 없습니다. 저를 올바른 방향으로 가르쳐주십시오.여러 환경에 대한 Sidekiq 구성

모두처럼 3 env (개발, 준비 및 제작).

나는이와

# 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.yml 파일에 다음이 그 나는 명령

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

로 sidekiq를 시작할 때 그것은에서 픽업 모든 값을 것이라고 구성 파일 및 해당 큐 및 log/sidekiq.log 로그 파일 sidekiq 시작하지만 작동하지 않습니다. Sidekiq가 시작되지만 우리가 사용하는 환경에 관계없이 stg_xyz_tests_queue, stg_default_xyz_queue 및 stg_xyz_default_queue 만 생성합니다.

나는이 큐와

#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 

이 확인 생성되지만 로그 파일이 생성되거나 기록되지 내가 복제하는 데 필요한 설정/환경/development.rb에 다음 코드를 사용하여 한 시도 다른 방법 이 코드는 모든 3 가지 환경에 적용됩니다.

내 설정에서 sidekiq을 원활하게 작동시키는 가장 좋은 방법은 무엇입니까 사전에 도움을 주셔서 감사합니다 !!!

+0

[링크] (https://github.com/mperham/sidekiq/issues/758) Sidekiq 사이트에 동일한 질문이 있습니다. – user1687078

답변

8

-e를 사용하여 환경을 전달합니다.

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

대답은 mperham입니다. 모든 환경 (개발, 준비 및 생산) 같은 서버에있는 경우

18

사용 -e 옵션을

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

을 다음 네임 스페이스를 사용합니다. 당신의 초기화/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  
+1

그리고 모두 동일한 서버에있는 경우 어떻게해야합니까? –

+0

그러면 여기에 네임 스페이스를 설정할 필요가 없습니다. –

+0

다른 환경에서 다른 서버를 사용하는 경우 initializers/sidekiq.rb에서 sidekiq 구성을 어떻게 정의하겠습니까? –

2

사용 로그를 설정하고, 환경 지원 :

bundle exec sidekiq -d -L log/sidekiq.log -e production -C config/sidekiq.yml 
관련 문제