Проблема с 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-адресов.

Другие вопросы по тегам