class Sidekiq::Queue
Encapsulates a queue within Sidekiq
. Allows enumeration of all jobs within the queue and deletion of jobs.
queue = Sidekiq::Queue.new("mailer") queue.each do |job| job.klass # => 'MyWorker' job.args # => [1, 2, 3] job.delete if job.jid == 'abcdef1234567890' end
Attributes
name[R]
Public Class Methods
all()
click to toggle source
Return all known queues within Redis.
# File lib/sidekiq/api.rb, line 232 def self.all Sidekiq.redis { |c| sscan(c, 'queues') }.sort.map { |q| Sidekiq::Queue.new(q) } end
new(name="default")
click to toggle source
# File lib/sidekiq/api.rb, line 238 def initialize(name="default") @name = name.to_s @rname = "queue:#{name}" end
Public Instance Methods
clear()
click to toggle source
# File lib/sidekiq/api.rb, line 298 def clear Sidekiq.redis do |conn| conn.multi do conn.del(@rname) conn.srem("queues", name) end end end
Also aliased as: 💣
each() { |job| ... }
click to toggle source
# File lib/sidekiq/api.rb, line 268 def each initial_size = size deleted_size = 0 page = 0 page_size = 50 while true do range_start = page * page_size - deleted_size range_end = range_start + page_size - 1 entries = Sidekiq.redis do |conn| conn.lrange @rname, range_start, range_end end break if entries.empty? page += 1 entries.each do |entry| yield Job.new(entry, @name) end deleted_size = initial_size - size end end
find_job(jid)
click to toggle source
Find the job with the given JID within this queue.
This is a slow, inefficient operation. Do not use under normal conditions. Sidekiq
Pro contains a faster version.
# File lib/sidekiq/api.rb, line 294 def find_job(jid) detect { |j| j.jid == jid } end
latency()
click to toggle source
Calculates this queue's latency, the difference in seconds since the oldest job in the queue was enqueued.
@return Float
# File lib/sidekiq/api.rb, line 257 def latency entry = Sidekiq.redis do |conn| conn.lrange(@rname, -1, -1) end.first return 0 unless entry job = Sidekiq.load_json(entry) now = Time.now.to_f thence = job['enqueued_at'] || now now - thence end
paused?()
click to toggle source
Sidekiq
Pro overrides this
# File lib/sidekiq/api.rb, line 248 def paused? false end
size()
click to toggle source
# File lib/sidekiq/api.rb, line 243 def size Sidekiq.redis { |con| con.llen(@rname) } end