Ich habe eine Python-Datei namens tasks.py
, in dem ich 4 einzelne Aufgaben definieren. Ich möchte Sellerie konfigurieren, um 4 Warteschlangen zu verwenden, da jeder Warteschlange eine andere Anzahl von Arbeitern zugewiesen ist. Ich habe gelesen, dass ich route_task Eigentum verwenden sollte, aber ich versuchte mehrere Optionen und kein Erfolg.Sellerie ein Broker mehrere Warteschlangen und Arbeiter
Ich folgte diesem doc celery route_tasks docs
Mein Ziel 4 Arbeiter, für jede Aufgabe ein ausgeführt werden würde, und sie Aufgaben nicht aus verschiedenen Arbeiter in verschiedenen Warteschlangen mischen. Es ist möglich? Es ist ein guter Ansatz?
Wenn ich etwas tue, falsch ich glücklich sein würde, meinen Code zu ändern, um es
funktioniertHier meine Config ist so weit
tasks.py
app = Celery('tasks', broker='pyamqp://[email protected]//')
app.conf.task_default_queue = 'default'
app.conf.task_queues = (
Queue('queueA', routing_key='tasks.task_1'),
Queue('queueB', routing_key='tasks.task_2'),
Queue('queueC', routing_key='tasks.task_3'),
Queue('queueD', routing_key='tasks.task_4')
)
@app.task
def task_1():
print "Task of level 1"
@app.task
def task_2():
print "Task of level 2"
@app.task
def task_3():
print "Task of level 3"
@app.task
def task_4():
print "Task of level 4"
Run Sellerie ein Arbeiter für jede Warteschlange
celery -A tasks worker --loglevel=debug -Q queueA --logfile=celery-A.log -n W1&
celery -A tasks worker --loglevel=debug -Q queueB --logfile=celery-B.log -n W2&
celery -A tasks worker --loglevel=debug -Q queueC --logfile=celery-C.log -n W3&
celery -A tasks worker --loglevel=debug -Q queueD --logfile=celery-D.log -n W4&
Im Grunde war mein Problem, eine Verwechslung mit der Dokumentation, ich war 3.x Version verwenden und Dokumentation 4.x ... epische fehlgeschlagen – cralfaro