Module: HireFire::Macro::Resque
Instance Method Summary collapse
-
#queue(*queues) ⇒ Integer
Counts the amount of jobs in the (provided) Resque queue(s).
Instance Method Details
#queue(*queues) ⇒ Integer
Counts the amount of jobs in the (provided) Resque queue(s).
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/hirefire/macro/resque.rb', line 18 def queue(*queues) queues = queues.flatten.map(&:to_s) queues = ::Resque.queues if queues.empty? redis = ::Resque.redis ids = Array(redis.smembers(:workers)).compact raw_jobs = redis.pipelined { ids.map { |id| redis.get("worker:#{id}") } } jobs = raw_jobs.map { |raw_job| ::Resque.decode(raw_job) || {} } in_queues = redis.pipelined do queues.map { |queue| redis.llen("queue:#{queue}") } end.map(&:to_i).inject(&:+) in_progress = jobs.inject(0) do |memo, job| memo += 1 if queues.include?(job["queue"]) memo end in_queues + in_progress end |