0

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

但是调度程序在两个实例上分别运行。

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

谢谢

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 调度上设置 rails。

于 2014-11-15T07:35:22.910 回答