我应该用什么Rails gem来制作Resque的重复工作?

时间:2016-02-05 05:29:56

标签: ruby-on-rails redis scheduled-tasks resque

我的应用中有一个“播放”按钮,用于检查API中的股票值并创建一个包含该值的Position对象。此操作使用Resque以下列方式使用Resque和Redis创建后台作业:

Controller - stock_controller.rb:

  def start_tracking
    @stock = Stock.find(params[:id])
    Resque.enqueue(StockChecker, @stock.id)
    redirect_to :back
  end

工人:

class StockChecker
  @queue = :stock_checker_queue

  def self.perform(stock_id)
    stock = Stock.find_by(id: stock_id)
    stock.start_tracking_position
  end

end

模型 - stock.rb:

  def start_tracking_position
    // A Position instance that holds the stock value is created
  end

我现在希望每15分钟为每个Stock对象发生这种情况。我查看了scheduling section in the Ruby Toolbox website并很难确定哪些符合我的需求以及如何开始实施。

我担心的是我的应用程序会创建大量Position个对象,因此我需要一些简单的东西,使用Resque并且可以承受这种类型的对象创建而不会使应用程序过载。

start_tracking对象发生Stock动作时,我应该使用什么样的gem以及每15分钟使Resque Job发生的最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

我发现resque调度程序很有用:https://github.com/resque/resque-scheduler

将schedule.yml配置为15分钟

我发现的最大问题是确保它正在运行发布等。最后我设置了上帝关机并重启

在负载方面。我不确定是否遵循,调度程序将触发事件,但负载取决于您拥有的工作人员数量以及您决定如何实施创建。您可以设置队列的优先级和队列的工作者,但我想如果您没有及时处理它们就会得到积压,那是可以接受的。 ?通常你会运行一个单独的服务器,这样可以最大限度地减少对前端的影响