class Sidekiq::Queue
Represents a queue within Sidekiq
. Allows enumeration of all jobs within the queue and deletion of jobs. NB: this queue data is real-time and is changing within Redis moment by moment.
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
Public Class Methods
Source
# File lib/sidekiq/api.rb, line 243 def self.all Sidekiq.redis { |c| c.sscan("queues").to_a }.sort.map { |q| Sidekiq::Queue.new(q) } end
Fetch all known queues within Redis.
@return [Array<Sidekiq::Queue>]
Source
# File lib/sidekiq/api.rb, line 250 def initialize(name = "default") @name = name.to_s @rname = "queue:#{name}" end
@param name [String] the name of the queue
Public Instance Methods
Source
# File lib/sidekiq/api.rb, line 331 def clear Sidekiq.redis do |conn| conn.multi do |transaction| transaction.unlink(@rname) transaction.srem("queues", [name]) end end true end
delete all jobs within this queue @return [Boolean] true
Source
# File lib/sidekiq/api.rb, line 295 def each initial_size = size deleted_size = 0 page = 0 page_size = 50 loop do range_start = page * page_size - deleted_size range_end = range_start + page_size - 1 entries = Sidekiq.redis { |conn| conn.lrange @rname, range_start, range_end } break if entries.empty? page += 1 entries.each do |entry| yield JobRecord.new(entry, @name) end deleted_size = initial_size - size end end
Source
# File lib/sidekiq/api.rb, line 325 def find_job(jid) detect { |j| j.jid == jid } end
Find the job with the given JID within this queue.
This is a *slow, inefficient* operation. Do not use under normal conditions.
@param jid [String] the job_id to look for @return [Sidekiq::JobRecord] @return [nil] if not found
Source
# File lib/sidekiq/api.rb, line 273 def latency entry = Sidekiq.redis { |conn| conn.lindex(@rname, -1) } return 0.0 unless entry job = Sidekiq.load_json(entry) enqueued_at = job["enqueued_at"] if enqueued_at if enqueued_at.is_a?(Float) # old format now = Time.now.to_f now - enqueued_at else now = ::Process.clock_gettime(::Process::CLOCK_REALTIME, :millisecond) (now - enqueued_at) / 1000.0 end else 0.0 end end
Calculates this queue’s latency, the difference in seconds since the oldest job in the queue was enqueued.
@return [Float] in seconds
Source
# File lib/sidekiq/api.rb, line 264 def paused? false end
@return [Boolean] if the queue is currently paused
Source
# File lib/sidekiq/api.rb, line 259 def size Sidekiq.redis { |con| con.llen(@rname) } end
The current size of the queue within Redis. This value is real-time and can change between calls.
@return [Integer] the size