2013-07-25 10 views
7

Używam Selera w projekcie django, moim brokerem jest RabbitMQ, a chcę pobrać długość kolejek. Przeszedłem przez kod selera, ale nie znalazłem narzędzia do tego. Znalazłem ten problem na stackoverflow (Check RabbitMQ queue size from client), ale nie uważam tego za satysfakcjonujące.Pobieranie długości kolejki za pomocą Selera (RabbitMQ, Django)

Wszystko jest ustawione w selerze, więc powinna istnieć jakaś magiczna metoda pobierania tego, co chcę, bez określania kanału/połączenia.

Czy ktoś ma pojęcie o tym pytaniu?

Dzięki!

Odpowiedz

0

Możesz sprawdzić pracowników selera przy użyciu modułu inspect. Oto guide.

Również dla RabbitMQ jest kilka command line command.

+1

dzięki za odpowiedź. Ale nie potrzebuję poleceń, potrzebuję klas Pythona lub metod. Ponadto, metoda inspekcji będzie kontrolować pracowników, a nie kolejki, czy mam rację? – user2619608

+0

'inspect' ** nie może ** pobrać długości oczekującej kolejki, jaką znam. Może być 'inspect reserved', ale z mojego doświadczenia to też nie pomaga .. – maxkoryukov

2

PyRabbit to prawdopodobnie to, czego szukasz, to interfejs Pythona do interfejsu API zarządzania RabbitMQ. Pozwoli to na zapytanie o kolejki i ich aktualną liczbę wiadomości.

2

Oto przykład, w jaki sposób odczytać długość kolejki w RabbitMQ dla danej kolejki:

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 

ten korzysta pyrabbit jak wcześniej sugerowane przez Philip

+0

, więc nie ma mowy o selekcji jak jest? –

+0

@FrederickNord, nie jestem tego świadomy. Rozumiem, że pracownicy (Seler) zajmują się jedynie bieżącym zadaniem lub co najwyżej zadaniem, które wcześniej wykonał (z RabbitMQ). Nie jest świadomy tego, co jest w RabbitMQ i celowo. –

Powiązane problemy