在 ruby 中计时 API 请求?

Timing API requests in ruby?

我有一个简单的脚本,可以从 API 中提取数据并将其存储在数据库 table 中。

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

非常感谢所有帮助。

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

resque-throttler 文档中的相关示例:

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 }