Module: HireFire::Macro::Sidekiq
Instance Method Summary collapse
-
#queue(*queues) ⇒ Integer
Counts the amount of jobs in the (provided) Sidekiq queue(s).
Instance Method Details
#queue(*queues) ⇒ Integer
Counts the amount of jobs in the (provided) Sidekiq queue(s).
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/hirefire/macro/sidekiq.rb', line 18 def queue(*queues) require "sidekiq/api" queues = queues.flatten.map(&:to_s) queues = ::Sidekiq::Stats.new.queues.map { |name, _| name } if queues.empty? in_queues = queues.inject(0) do |memo, name| memo += ::Sidekiq::Queue.new(name).size memo end in_schedule = ::Sidekiq::ScheduledSet.new.inject(0) do |memo, job| memo += 1 if queues.include?(job["queue"]) && job.at <= Time.now memo end in_retry = ::Sidekiq::RetrySet.new.inject(0) do |memo, job| memo += 1 if queues.include?(job["queue"]) && job.at <= Time.now memo end i = ::Sidekiq::VERSION >= "3.0.0" ? 2 : 1 in_progress = ::Sidekiq::Workers.new.inject(0) do |memo, job| memo += 1 if queues.include?(job[i]["queue"]) && job[i]["run_at"] <= Time.now.to_i memo end in_queues + in_schedule + in_retry + in_progress end |