运行具有动态更改周期的定期任务

时间:2015-01-19 06:14:00

标签: ruby-on-rails ruby

我的任务是监控来自stock website的一些信息。

应该每隔 10分钟检查网站的库存状态

如果股票指数上涨,检查期应改为 5秒

如果sotck索引正在下降,则检查周期应为 10分钟

用于运行定期任务

我发现gem whenever可以执行cron任务。 但我没有动态改变检查期的想法? 任何想法?

1 个答案:

答案 0 :(得分:1)

对于这个简单的任务,我将创建两个不同的cron任务和一个,例如“global”变量,表示是否应该实际运行频繁任务。这样,每10分钟任务将始终运行,并且只有索引上升时,每5秒任务才会运行。

class Checker
  @@rising = false
  class << self
    def check
      @@rising = actual_check > 0 # core check func
    end
    def freq_check
      check if @@rising
    end
    def rare_check
      check
    end
  end
end

every 10.minutes do
  runner "Checker.rare_check"
end
every 5.seconds do
  runner "Checker.freq_check"
end

这绝对不是一个最优雅的解决方案,但它确实很容易处理/测试。