Управление несколькими экземплярами Resque и Redis

Я пытаюсь, чтобы Бог контролировал два случая Resque, один для производства и один для постановки.

Поэтому я запускаю два экземпляра Redis при загрузке системы: redis_6379 и redis_6380.

Затем я использую Daemontools, чтобы начать и контролировать Бога.

Мой Бог сценарий выглядит примерно так:

God.watch do |w|
  w.dir      = "#{rails_root}"
  w.name     = "resque-#{num}"
  w.group    = 'resque'
  w.interval = 30.seconds
  w.env      = {"QUEUE"=>"critical,high,low", "RAILS_ENV"=>rails_env}
  w.start    = "rake resque:work QUEUE='*' RAILS_ENV=#{rails_env}"
  ....
end

Разве мне не нужно каким-то образом связывать процессы постановки и повторного создания с конкретными экземплярами redis?

Я постепенно соединяю это, но я думаю, что мне не хватает ключевой части.

заранее спасибо

1 ответ

Решение

Во-первых, вам не нужно указывать QUEUE а также RAILS_ENV в w.start так как вы уже указали их в нужном месте, w.env,

Во-вторых, этот скрипт запускает один экземпляр resque в rails_env окружающая среда (какова бы ни была ее ценность).

Я предлагаю что-то вроде этого:

%w(staging production).each do |rails_env|
  God.watch do |w|
    w.dir      = "#{rails_root}" # <= is this path the same for production and staging?
                                 # if not, change accordingly.
    w.name     = "resque-#{rails_env}"
    w.group    = 'resque'
    w.interval = 30.seconds
    w.env      = {"QUEUE"=>"critical,high,low", "RAILS_ENV"=>rails_env}
    w.start    = "rake resque:work"
    ....
  end
end
Другие вопросы по тегам