2017-05-17 1 views
0

ich verschiedene Sellerie Warteschlangen und an einem bestimmten Punkt habe ich mag Arbeiter aus meinen WarteschlangenSellerie Lebenslauf aus einer Warteschlange raubend

celery_app.control.cancel_consumer(consumer_queue) 

In einem beim Verbrauchen stoppen ich die Verbraucher in die Lage sein will, wieder aufnehmen und ich das tun mit dem nächsten Befehl

celery.control.add_consumer(
    consumer_queue, 
    routing_key=consumer_queue, 
    destination=['worker-name'], 
) 

An diesem Punkt erwarte ich worker-name werden Aufgaben aus consumer_queue holen, die mein benutzerdefinierten Router durch ein routing_key umleitet. Aber stattdessen habe ich diese Ausgabe von einem Sellerie inspizieren

celery.control.inspect().active_queues() 

{'[email protected]': []}

Einige Details Sellerie: celery==3.1.23 Kombu: kombu==3.0.35 Billard: billiard==3.3.0.23

Hinweis: Hinzufügen Verbraucher über Sellerie Blume (flower==0.8.4) funktioniert sogar, dass der Befehl derselbe ist.

Was mache ich falsch und wie kann man richtig konsumieren?

Antwort

0

Ok, es war eine vorzeitige Frage mit einer einfachen Lösung: Ich habe einen falschen Namen für den Arbeiter zur Verfügung gestellt, anstatt worker-name einzustellen Ich sollte [email protected] Bezeichner bereitstellen. Für Debug-Zwecke ist es auch nützlich reply=True Argument

response = celery.control.add_consumer(
    consumer_queue, 
    routing_key=consumer_queue, 
    destination=['[email protected]{}'.format(consumer)], 
    reply=True, 
) 
print(response) 

zu setzen und Sie werden sehen, ob der Betrieb erfolgreich war oder nicht [{u'[email protected]': {u'ok': u'add consumer consumer-queue'}}]

Verwandte Themen