class Sidekiq::RateLimiter::Fetch
Public Instance Methods
limit(work)
click to toggle source
# File lib/sidekiq-rate-limiter/fetch.rb, line 14 def limit(work) message = JSON.parse(work.respond_to?(:message) ? work.message : work.job) rescue {} args = message['args'] klass = message['class'] rate = Rate.new(message) return work unless !!(klass && rate.valid?) limit = rate.limit interval = rate.interval name = rate.name options = { :limit => (limit.respond_to?(:call) ? limit.call(*args) : limit).to_i, :interval => (interval.respond_to?(:call) ? interval.call(*args) : interval).to_i, :name => (name.respond_to?(:call) ? name.call(*args) : name).to_s, } Sidekiq.redis do |conn| lim = Limit.new(conn, options) if lim.exceeded?(klass) conn.lpush("queue:#{work.queue_name}", work.respond_to?(:message) ? work.message : work.job) nil else lim.add(klass) work end end end
retrieve_work()
click to toggle source
Calls superclass method
# File lib/sidekiq-rate-limiter/fetch.rb, line 10 def retrieve_work limit(super) end