在 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 }
我有一个简单的脚本,可以从 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 }