2013-07-25 12 views
7

Utilizzo di Celery in un progetto django, il mio broker è RabbitMQ e desidero recuperare la lunghezza delle code. Ho passato il codice di Celery ma non ho trovato lo strumento per farlo. Ho trovato questo problema su StackOverflow (Check RabbitMQ queue size from client), ma non lo trovo soddisfacente.Recupero della lunghezza della coda con Celery (RabbitMQ, Django)

Tutto è impostato in sedano, quindi ci dovrebbe essere una sorta di metodo magico per recuperare quello che voglio, senza specificare un canale/connessione.

Qualcuno ha qualche idea su questa domanda?

Grazie!

risposta

0

È possibile ispezionare gli operai in sedano utilizzando il modulo inspect. Ecco lo guide.

Anche per RabbitMQ ci sono alcuni command line command.

+1

grazie per la risposta. Ma non ho bisogno di comandi, ho bisogno di classi o metodi Python. Inoltre, il metodo di ispezione ispezionerà i lavoratori, non le code, ho ragione? – user2619608

+0

'inspect' ** non può ** recuperare la lunghezza della coda in sospeso come so. Può essere "ispezionato riservato", ma nella mia esperienza non aiuta troppo ... – maxkoryukov

2

PyRabbit è probabilmente quello che stai cercando, è un'interfaccia Python all'interfaccia API di gestione RabbitMQ. Vi consentirà di interrogare per le code e il loro conteggio dei messaggi correnti.

2

Ecco un esempio su come leggere la lunghezza della coda in RabbitMQ per una data coda:

def get_rabbitmq_queue_length(q): 
    from pyrabbit.api import Client 
    from pyrabbit.http import HTTPError 

    count = 0 

    try: 
     cl = Client('localhost:15672', 'guest', 'guest') 
     if cl.is_alive(): 
      count = cl.get_queue_depth('/', q) 
    except HTTPError as e: 
     print "Exception: Could not establish to rabbitmq http api: " + str(e) + " Check for port, proxy, username/pass configuration errors" 
     raise 

    return count 

Questo sta usando pyrabbit come precedentemente suggerito da Philip

+0

quindi niente via attraverso il sedano così com'è? –

+0

@FrederickNord, non che io sappia. La mia comprensione è che gli operai (Celery) si preoccupano solo del suo compito attuale, o al massimo del compito che ha precaricato (da RabbitMQ). Non è a conoscenza di cosa c'è in RabbitMQ e intenzionalmente. –

Problemi correlati