运行具有动态变化周期的周期性任务



我有一项任务,就是监控股票网站上的一些信息。

它应该每10分钟检查一次网站上的库存状态

一旦股指上涨,检查周期应更改为每5秒一次。

如果sotk指数下降,则检查时间应为10分钟

用于运行定期任务

我发现gem whenever可以完成cron任务。但是我没有动态更改检查周期的想法?有什么想法吗?

对于这个简单的任务,我将创建两个不同的cron任务和一个,比如"全局"变量,表示是否应该实际运行频繁任务。这样,每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

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

最新更新