class Lightspeed::RequestThrottler
Attributes
bucket_level[RW]
bucket_max[RW]
units_per_second[RW]
Public Class Methods
new()
click to toggle source
# File lib/lightspeed/request_throttler.rb, line 7 def initialize @units_per_second = 0.5 @bucket_max = Float::INFINITY @bucket_level = 0 end
Public Instance Methods
perform_request(request)
click to toggle source
# File lib/lightspeed/request_throttler.rb, line 13 def perform_request request u = units request sleep(u / @units_per_second) if @bucket_level + u > @bucket_max response = request.perform extract_rate_limits request response end
Private Instance Methods
extract_rate_limits(request)
click to toggle source
# File lib/lightspeed/request_throttler.rb, line 27 def extract_rate_limits request @bucket_max, @bucket_level = request.bucket_max, request.bucket_level @units_per_second = @bucket_max/60.0 end
units(request)
click to toggle source
# File lib/lightspeed/request_throttler.rb, line 23 def units request if request.raw_request.is_a? Net::HTTP::Get then 1 else 10 end end