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 call #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, started_at|
  # name is a unique identifier per worker
  # work is a Hash which looks like:
  # { 'queue' => name, 'run_at' => timestamp, 'payload' => msg }
  # started_at is a String rep of the time when the worker started working on the job
end

Instance Method Summary collapse

Instance Method Details

#each(&block) ⇒ Object



415
416
417
418
419
420
421
422
423
424
425
426
427
# File 'lib/sidekiq/api.rb', line 415

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

#sizeObject



429
430
431
432
433
# File 'lib/sidekiq/api.rb', line 429

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