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: