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}