class Sidekiq::RateLimiter::Rate

Public Class Methods

new(message) click to toggle source
# File lib/sidekiq-rate-limiter/fetch.rb, line 48
def initialize(message)
  @message = message
end

Public Instance Methods

interval() click to toggle source
# File lib/sidekiq-rate-limiter/fetch.rb, line 56
def interval
  rate['interval'] || rate['period']
end
limit() click to toggle source
# File lib/sidekiq-rate-limiter/fetch.rb, line 52
def limit
  rate['limit'] || rate['threshold']
end
name() click to toggle source
# File lib/sidekiq-rate-limiter/fetch.rb, line 60
def name
  rate['name'] || DEFAULT_LIMIT_NAME
end
valid?() click to toggle source
# File lib/sidekiq-rate-limiter/fetch.rb, line 64
def valid?
  !!(limit && interval)
end

Private Instance Methods

client_rate() click to toggle source
# File lib/sidekiq-rate-limiter/fetch.rb, line 82
def client_rate
  @client_rate ||= @message['rate'] || @message['throttle'] || {}
end
rate() click to toggle source
# File lib/sidekiq-rate-limiter/fetch.rb, line 70
def rate
  use_server_rate? ? server_rate : client_rate
end
server_rate() click to toggle source
# File lib/sidekiq-rate-limiter/fetch.rb, line 86
def server_rate
  return @server_rate if @server_rate

  worker_class = @message['class']
  options = Object.const_get(worker_class).get_sidekiq_options rescue {}
  server_rate = options['rate'] || options['throttle'] || {}
  @server_rate = server_rate.map { |k, v| [k.to_s, v] }.to_h
end
use_server_rate?() click to toggle source
# File lib/sidekiq-rate-limiter/fetch.rb, line 74
def use_server_rate?
  server_rate['limit'] && server_rate['limit'].respond_to?(:call) ||
    server_rate['threshold'] && server_rate['threshold'].respond_to?(:call) ||
    server_rate['period'] && server_rate['period'].respond_to?(:call) ||
    server_rate['interval'] && server_rate['interval'].respond_to?(:call) ||
    server_rate['name'] && server_rate['name'].respond_to?(:call)
end