Проблема с rufus-планировщиком, когда у нас есть несколько экземпляров EC2
Я развернул приложение rails на двух экземплярах EC2. Я запланировал на Job with rufus-scheduler запускаться каждые 24 часа, чтобы отправить несколько писем.
Но планировщик работает отдельно в двух случаях.
Мне нужно запустить планировщик только на одном экземпляре. Так что вы можете помочь с этой проблемой?
Спасибо
1 ответ
Предположим, вы следили за https://github.com/jmettraux/rufus-scheduler
Вы можете изменить инициализатор следующим образом:
#
# 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-адресов.