假设我有一个需要从API提取数据的应用程序,但是我发送查询的频率是有限的(即,X请求/分钟上限)。为了确保我没有达到这个限制,我想将请求添加到队列,并有一个后台作业,它将拉动X请求并每分钟执行一次。但是,我不确定Rails中最好的方法是什么。从我收集的内容来看,DelayedJob是满足我需求的更好的库,但我没有看到任何支持只运行X作业一分钟。有谁知道是否有一种实现这样的功能的首选方式?
答案 0 :(得分:6)
我有点晚了但是我想警告你不要在你的情况下使用whenever
宝石:
由于您正在使用Ruby on Rails,因此每次在cron中调用时,使用whatever gem都会加载环境。
例如,将代码放在config/initializers/cron_stuff.rb
require 'rufus/scheduler'
scheduler = Rufus::Scheduler.start_new
scheduler.every '20m' do
puts 'hello'
end
答案 1 :(得分:1)
答案 2 :(得分:0)
也许你可以[随时]尝试:https://github.com/javan/whenever
然后您可以添加以下任务:
every 3.hours do
runner "MyModel.some_process"
rake "my:rake:task"
command "/usr/bin/my_great_command"
end
在schedule.rb文件中