2014-11-15 10 views
0

Я развернул приложение rails на двух экземплярах EC2. Я запланировал на Job с rufus-scheduler работать каждые 24 часа, чтобы отправить несколько писем.Проблема с rufus-scheduler, когда у нас есть несколько экземпляров EC2

Но планировщик работает отдельно в двух экземплярах.

Мне нужно запустить планировщик только на одном экземпляре. Так что, пожалуйста, помогите с этим вопросом?

Благодаря

ответ

3

Давайте предположим, что вы следовали https://github.com/jmettraux/rufus-scheduler#so-rails

Вы можете изменить инициализатору таким образом:

# 
# config/initializers/scheduler.rb 

require 'rufus-scheduler' 

s = Rufus::Scheduler.singleton 

unless File.exist?(File.dirname(__FILE__) + '/../../no_scheduling') 

    s.every '1m' do 
    Rails.logger.info "hello, it's #{Time.now}" 
    end 
end 

Затем в корневом каталоге Rails экземпляра, который вы не хотите расписание, просто коснитесь файла no_scheduling, а затем запустите Rails. Экземпляры с файлом «no_scheduling» не планируются.

Упражнение 1: улучшите инициализатор выше, чтобы он даже не создавал экземпляр планировщика, если присутствует no_scheduling.

Упражнение 2: замените проверку файла на проверку IP, чтобы настроить только рельсы по заданному IP-расписанию.