Vraag Programmeer het aantal taken in een Resque-wachtrij


Ik ben geïnteresseerd in het opzetten van een bewakingsservice die me doorzoekt wanneer er te veel taken in de Resque-wachtrij staan ​​(ik heb ongeveer 6 wachtrijen, ik heb verschillende nummers voor elke wachtrij). Ik wil ook een zeer vergelijkbare bewakingsservice instellen die me waarschuwt als ik een bepaald aantal mislukte taken in mijn wachtrij overschrijd.

Mijn vraag is, er zijn veel sleutels en verwarring die ik zie aangesloten bij Resque op mijn redis-server. Ik zie niet per se een eenvoudige manier om een ​​aantal opdrachten per wachtrij of het aantal mislukte taken te krijgen. Is er momenteel een triviale manier om deze gegevens van redis te pakken?


46
2018-06-27 21:52


oorsprong


antwoorden:


ja het is vrij eenvoudig, als je de Resque edelsteen:

require 'resque'

Resque.info 

zal een hash teruggeven

bijv. / =>

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

Dus om het aantal mislukte taken te krijgen, gebruikt u gewoon:

Resque.info[:failed]

wat zou geven => 8761 #in mijn voorbeeld

Om de wachtrijen te gebruiken:

Resque.queues

dit levert een array op

bijv. = =

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

U kunt dan het aantal taken per wachtrij vinden:

Resque.size(queue_name)

bijv / Resque.size("superQ")  of Resque.size(Resque.queues[0])  .....

HTH?


115
2018-06-27 22:56



Hier is een bash-script dat het totale aantal opdrachten in de wachtrij en het aantal mislukte taken zal bewaken.

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

Dit is voor Resque 1.X, 2.0 kan verschillende sleutelnamen hebben.


7
2018-06-05 03:52