Class: Sidekiq::Workers

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/sidekiq/api.rb

Overview

Programmatic access to the current active worker set.

WARNING WARNING WARNING

This is live data that can change every millisecond. If you do #size => 5 and then expect #each to be called 5 times, you’re going to have a bad time.

workers = Sidekiq::Workers.new
workers.size => 2
workers.each do |name, work|
  # name is a unique identifier per Processor instance
  # work is a Hash which looks like:
  # { 'queue' => name, 'run_at' => timestamp, 'payload' => msg }
end

Instance Method Summary collapse

Instance Method Details

#each(&block) ⇒ Object



374
375
376
377
378
379
380
381
382
383
# File 'lib/sidekiq/api.rb', line 374

def each(&block)
  Sidekiq.redis do |conn|
    workers = conn.smembers("workers")
    workers.each do |w|
      msg = conn.get("worker:#{w}")
      next unless msg
      block.call(w, Sidekiq.load_json(msg))
    end
  end
end

#sizeObject



385
386
387
388
389
# File 'lib/sidekiq/api.rb', line 385

def size
  Sidekiq.redis do |conn|
    conn.scard("workers")
  end.to_i
end