rails ruby-on-rails ruby redis resque

ruby-on-rails - redis rails



Obtenga programáticamente el número de trabajos en una cola de Resque (2)

Aquí hay un script de bash que controlará el número total de trabajos en cola y el número de trabajos fallidos.

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 this done

Esto es para Resque 1.X, 2.0 puede tener diferentes nombres de clave.

Estoy interesado en configurar un servicio de monitoreo que me llame cuando haya demasiados trabajos en la cola de Resque (tengo alrededor de 6 colas, tendré diferentes números para cada cola) También quiero configurar un servicio de monitoreo muy similar que me avise cuando exceda una cierta cantidad de trabajos fallidos en mi cola.

Mi pregunta es, hay muchas claves y confusión que veo afiliada con Resque en mi servidor redis. No necesariamente veo una forma directa de obtener un recuento de trabajos por cola o el número de trabajos fallidos. ¿Existe actualmente una forma trivial de obtener estos datos de redis?


sí, es bastante fácil, dado que estás usando la gema Resque :

require ''resque'' Resque.info

devolverá un hash

por ejemplo / =>

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

Así que para obtener el recuento de trabajos fallidos, simplemente use:

Resque.info[:failed]

lo que daría => 8761 #en mi ejemplo

Para obtener las colas use:

Resque.queues

esto devuelve una matriz

por ejemplo / =>

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

A continuación, puede encontrar el número de trabajos por cola:

Resque.size(queue_name)

ej. / Resque.size("superQ") o Resque.size(Resque.queues[0]) .....

HTH?