class Rack::Throttle::Hourly
This rate limiter strategy throttles the application by defining a maximum number of allowed HTTP requests per hour (by default, 3,600 requests per 60 minutes, which works out to an average of 1 request per second).
Note that this strategy doesn't use a sliding time window, but rather tracks requests per distinct hour. This means that the throttling counter is reset every hour on the hour (according to the server's local timezone).
@example Allowing up to 3,600 requests per hour
use Rack::Throttle::Hourly
@example Allowing up to 100 requests per hour
use Rack::Throttle::Hourly, :max => 100
Public Class Methods
new(app, options = {})
click to toggle source
@param [#call] app @param [Hash{Symbol => Object}] options @option options [Integer] :max (3600)
Calls superclass method
# File lib/rack/throttle/hourly.rb, line 24 def initialize(app, options = {}) super end
Public Instance Methods
max_per_hour(request = nil)
click to toggle source
# File lib/rack/throttle/hourly.rb, line 29 def max_per_hour(request = nil) @max_per_hour ||= options[:max_per_hour] || options[:max] || 3_600 end
Also aliased as: max_per_window
Protected Instance Methods
cache_key(request)
click to toggle source
@param [Rack::Request] request @return [String]
Calls superclass method
# File lib/rack/throttle/hourly.rb, line 40 def cache_key(request) [super, Time.now.strftime('%Y-%m-%dT%H')].join(':') end