0

Rails アプリを 2 つの EC2 インスタンスにデプロイしました。メールを送信するために rufus-scheduler を使用して Job を 24 時間ごとに実行するようにスケジュールしました。

ただし、スケジューラは 2 つのインスタンスで別々に実行されています。

1 つのインスタンスでのみスケジューラを実行する必要があります。それで、この問題について助けてもらえますか?

ありがとう

4

1 に答える 1

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 スケジュールでレール セットアップのみがスケジュールされるようにします。

于 2014-11-15T07:35:22.910 に答える