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).
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/hirefire/macro/sidekiq.rb', line 20 def queue(*queues) require "sidekiq/api" queues.flatten! if queues.last.is_a?(Hash) = queues.pop else = {} end queues = queues.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 if ![:skip_scheduled] max = [:max_scheduled] in_schedule = ::Sidekiq::ScheduledSet.new.inject(0) do |memo, job| memo += 1 if queues.include?(job["queue"]) && job.at <= Time.now break memo if max && memo >= max memo end end if ![:skip_retries] in_retry = ::Sidekiq::RetrySet.new.inject(0) do |memo, job| memo += 1 if queues.include?(job["queue"]) && job.at <= Time.now memo end 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].compact.inject(&:+) end |