Sha256: dc6b440577abb4e8a1f6d7f45f5eca15fe68143b8ad2ddf2119e6d111c79835a
Contents?: true
Size: 1.13 KB
Versions: 1
Compression:
Stored size: 1.13 KB
Contents
module Rack; module Throttle ## # This rate limiter strategy throttles the application by defining a # maximum number of allowed HTTP requests per second (by default, 1 # request per second. # # Note that this strategy doesn't use a sliding time window, but rather # tracks requests per distinct second. This means that the throttling # counter is reset every second. # # @example Allowing up to 1 request/second # use Rack::Throttle::Second # # @example Allowing up to 100 requests per second # use Rack::Throttle::Second, :max => 100 # class Second < TimeWindow ## # @param [#call] app # @param [Hash{Symbol => Object}] options # @option options [Integer] :max (1) def initialize(app, options = {}) super end ## def max_per_second @max_per_second ||= options[:max_per_second] || options[:max] || 1 end alias_method :max_per_window, :max_per_second protected ## # @param [Rack::Request] request # @return [String] def cache_key(request) [super, Time.now.strftime('%Y-%m-%dT%H:%M:%S')].join(':') end end end; end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rack-throttle-0.4.2 | lib/rack/throttle/second.rb |