【问题标题】:Whenever gem with cron or Resque gem for running tasks in rails每当 gem 使用 cron 或 Resque gem 在 Rails 中运行任务时
【发布时间】:2017-04-26 07:47:44
【问题描述】:
我有一个从 Yahoo Finance 获取财务数据的股票投资组合应用程序。我想设置一个功能来计算投资组合的价值(这将涉及向雅虎发送一个获取所有相关股票价格的请求并计算价格*数量并将其保存在投资组合对象的数量属性中)。我有一个估值模型(属于投资组合),它将用于创建估值实例,该实例将每天存储投资组合的金额和日期。然后,我会将投资组合的估值绘制在图表上,以跟踪其选股的表现。
我只想在一天结束时运行一次。就目前而言,我正在考虑简单地使用when gem 来安排任务并运行上述操作来获取和计算价格。这对于像 Resque 这样的后台处理框架来说是一个很好的用例吗?
【问题讨论】:
标签:
ruby-on-rails
ruby
cron
jobs
【解决方案1】:
有很多方法可以完成您的任务。一种方法是编写 rake 任务并每天运行一次。对于日程安排,您可以使用whenever gem。它为描述 cron 计划提供了方便的方式。
每当文档:
Whenever 是一个 Ruby gem,它为编写和编写提供了清晰的语法
部署 cron 作业。
# We will run rake task every day at some time
every :day, :at => '12:20am' do
rake 'calculate_averages'
end
任务示例:
require 'rake'
task :calculate_averages => :environment do
products = Product.all
products.each do |product|
puts "Calculating average rating for #{product.name}..."
product.update_attribute(:average_rating, product.reviews.average("rating"))
end
end
开始阅读whenever 文档以及如何编写rake tasks. 如何编写tasks #2。