ruby-on-rails - 我应该使用什么 Rails gem 来使用 Resque 进行重复性工作?

标签 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

worker :

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

我现在希望每个 Stock 对象每 15 分钟发生一次。我看着 scheduling section in the Ruby Toolbox website并且很难决定什么适合我的需求以及如何开始实现它。

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

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

最佳答案

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

配置 schedule.yml 15 分钟

我发现的最大问题是确保它在发布后运行等。最后我将上帝设置为关闭并重新启动

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

关于ruby-on-rails - 我应该使用什么 Rails gem 来使用 Resque 进行重复性工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35216911/

相关文章:

ruby-on-rails - 在 ruby​​ 中从 Excel xls 转换为 xlsx

ruby-on-rails - rails carrierwave 为 STI 生成的 url

redis - 使用ReJson存储数值树

c# - 计划任务时间约束

ruby-on-rails - 将 User-Agent 重写为所有 Open URI 请求

ruby-on-rails - rails has_secure_password。是否可以更改数据库中的用户密码

Node.js redis "unknown command ' hset'”?

redis - Redis 服务器是否在 lua 脚本的命令之间删除过期的 key ?

java - @Scheduled注解Spring

java - 在 spring boot 中创建预定方法的最佳实践