在ruby中定时API请求?

时间:2015-08-15 20:38:10

标签: ruby rubygems

我有一个简单的脚本,它从API中提取数据并将其存储在db表中。

我想知道的是,在指定的时间范围(1分钟或2分钟)内指定我想要发生的请求数量的最佳方法是什么?

非常感谢所有帮助。

1 个答案:

答案 0 :(得分:2)

您可以将脚本设置为resque任务,并使用resque-throttler为该任务提供速率限制。我喜欢resque执行重复的后台任务。

来自resque-throttler docs的相关示例:

require 'resque'
require 'resque/throttler'

# Rate limit at 10 jobs from `my_queue` per minute
Resque.rate_limit(:my_queue, :at => 10, :per => 60)

对于更简单的方法,您可以使用像glutton_ratelimit这样的库来帮助完成此任务。这个图书馆的相关例子给我读了一遍:

class RateLimitTest
    # The class must be extended to permit limiting.
    extend GluttonRatelimit

    def initialize
       @start = Time.now
    end

    def limit_me
        puts "#{Time.now - @start}"
    end

    # Throttle the limit_me method to five executions every sixty seconds.
    rate_limit :limit_me, 5, 60
end

t = RateLimitTest.new

10.times { t.limit_me }