当我们有多个EC2实例时,rufus-scheduler会出现问题

时间:2014-11-15 06:32:08

标签: ruby-on-rails amazon-ec2 delayed-job rufus-scheduler

我在两个EC2实例上部署了rails app。我已安排在Job上使用rufus-scheduler每24小时运行一次以发送一些电子邮件。

但调度程序在两个实例上单独运行。

我只需要在一个实例上运行调度程序。那么请你帮忙解决这个问题吗?

由于

1 个答案:

答案 0 :(得分: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计划上设置rails。