Sidekiq развернуть в нескольких средах

(См. Ниже мой подробный конфиг, который является результатом Henley Chiu 'ответь)

Я пытался обернуть мой мозг вокруг развертывания Sidekiq, и я не понимаю этого. У меня есть приложение с промежуточной средой и производственной средой на одном сервере. Все, что я вижу о развертывании Sidekiq, в основном говорит:просто добавьте sidekiq / capistrano в ваш файл развертывания "Я так и сделал. И тогда инструкции "Вот's yml-файл с параметрами " но, кажется, ничего не объясняется. Нужны ли мне пространства имен? Я вижу это в файле инициализации, но, похоже, это указывает за пределами сервера.

Я развернул ранее, и каждый этап, кажется, загружает sidekiq с соответствующей средой, но они оба обрабатывают из одних и тех же очередей. Мои электронные письма с производства пытались обработать сценой sidekiq, но не смогли. Я остановил свою сцену на данный момент, но в конечном итоге мне придется использовать ее снова. Я надеюсь я'я не плотный, яЯ действительно пытался понять это, и мне просто трудно найти окончательное "Вот'покажи это'сделано ".

Для чего этоs стоит, вот config / sidekiq.yml (который отлично загружается во время развертывания):

:concurrency: 5
:verbose: false
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
  - [carrierwave, 7]
  - [client_emails, 5]
  - [default, 3]
staging:
  :concurrency: 10
production:
  :concurrency: 25

Файлы журнала и pids, кажется, находятся в правильном месте, но очереди просто объединены. Любая помощь будет БОЛЬШОЙ!

Также, если это имеет значение:

Rails 3.2.11, passenger, nginx, rvm, Ubuntu 12.10, and Ruby 1.9.3
Подробная конфигурация (ответ):

Сначала я установил новый сервер Redis на порт 7777 (или любой другой порт, который вы предпочитаете, кроме 6379 по умолчанию). В значительной степени следовалРуководство по быстрому старту Redis что я использовал в первый раз.

Затем я сделал файл инициализатора; это имеет как клиент, так и сервер конфигурации. И то, и другое требует, чтобы sidekiq работал многоступенчато.

Обратите внимание, что я использую внешний файл YAML для настроек. я используюSettingsLogic для этого, чтобы сделать вещи проще, но вы можете так же легкосделай это сам, включив файл, Используя файл yaml, мы нене нужно трогать наши среды / промежуточные или производственные файлы.

# config/initializers/sidekiq.rb
server = Settings.redis.server
port = Settings.redis.port
db_num = Settings.redis.db_num
namespace = Settings.redis.namespace

Sidekiq.configure_server do |config|  
  config.redis = { url: "redis://#{server}:#{port}/#{db_num}", namespace: namespace  }
end

Я использую пассажира -страница устранения неполадок вики Sidekiq рекомендует изменить настройки при использовании единорога или пассажира, поэтому я добавил туда код для настройки клиента:

# config/initializers/sidekiq.rb (still)
if defined?(PhusionPassenger)
  PhusionPassenger.on_event(:starting_worker_process) do |forked|
    Sidekiq.configure_client do |config|
      config.redis = { url: "redis://#{server}:#{port}/#{db_num}", namespace: namespace }
    end if forked
  end
end

Это мой файл настроек (очевидно, значения изменены):

#config/settings.yml
defaults: &defaults
  redis: &redis_defaults
    server: 'localhost'
    port: 6379
    db_num: 0
    namespace: 'sidekiq_development'

development:
  

Ответы на вопрос(3)

Ваш ответ на вопрос