我有一个简单的脚本,它从API中提取数据并将其存储在db表中。
我想知道的是,在指定的时间范围(1分钟或2分钟)内指定我想要发生的请求数量的最佳方法是什么?
非常感谢所有帮助。
答案 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 }