如何在特定时间运行操作 - Rails Heroku服务器?

时间:2016-08-09 03:03:03

标签: ruby-on-rails ruby heroku

我正致力于构建基于Rails的物联网平台,其中某些设备在某些预定时间被操纵。但是,我在特定时间运行操作时遇到困难,因为Heroku的内置Scheduling库似乎只支持不断间隔的回调。我的服务器需要在任意时间进行呼叫,而不会再重复。 Rails中是否还有其他任何可以提供此功能的宝石或方法?

1 个答案:

答案 0 :(得分:0)

您可以使用delyed job gem。利用run_at字段在特定时间运行您的任务 这是一个例子

class LongTasks
  def send_mailer
    # Some other code
  end
  handle_asynchronously :send_mailer, :priority => 20

  def in_the_future
    # Some other code
  end
  # 5.minutes.from_now will be evaluated when in_the_future is called
  handle_asynchronously :in_the_future, :run_at => Proc.new { 5.minutes.from_now }

  def self.when_to_run
    2.hours.from_now
  end

  class << self
    def call_a_class_method
      # Some other code
    end
    handle_asynchronously :call_a_class_method, :run_at => Proc.new { when_to_run }
  end

  attr_reader :how_important

  def call_an_instance_method
    # Some other code
  end
  handle_asynchronously :call_an_instance_method, :priority => Proc.new {|i| i.how_important }
end