Programmatically get the number of jobs in a Resque queue Programmatically get the number of jobs in a Resque queue ruby ruby

Programmatically get the number of jobs in a Resque queue


yes it's quite easy, given you're using the Resque gem:

require 'resque'Resque.info 

will return a hash

e.g/ =>

{      :pending => 54338,      :processed => 12772,      :queues => 2,      :workers => 0,      :working => 0,      :failed => 8761,      :servers => [      [0] "redis://192.168.1.10:6379/0"    ],    :environment => "development"}

So to get the failed job count, simply use:

Resque.info[:failed]

which would give=> 8761 #in my example

To get the queues use:

Resque.queues

this returns a array

e.g./ =>

[    [0] "superQ",    [1] "anotherQ"]

You may then find the number of jobs per queue:

Resque.size(queue_name)

e.g/ Resque.size("superQ") or Resque.size(Resque.queues[0]) .....


Here is a bash script which will monitor the total number of jobs queued and the number of failed jobs.

while :do   let sum=0  let errors=$(redis-cli llen resque:failed)  for s in $(redis-cli keys resque:queue:*)  do     let sum=$sum+$(redis-cli llen $s)  done  echo $sum jobs queued, with $errors errors  sleep 1 # sleep 1 second, probably want to increase thisdone

This is for Resque 1.X, 2.0 might have different key names.


There is also a method Resque.queue_sizes That returns a hash of the queue name and size

Resque.queue_sizes=> {"default"=>0, "slow"=>0}