我在两个EC2实例上部署了rails app。我已安排在Job上使用rufus-scheduler每24小时运行一次以发送一些电子邮件。
但调度程序在两个实例上单独运行。
我只需要在一个实例上运行调度程序。那么请你帮忙解决这个问题吗?
由于
答案 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。