私はtasks.py
と呼ばれるPythonファイルを持っています。このファイルでは、4つの単一タスクを定義しています。私は4つのキューを使用するためにセロリを構成したいと思います。なぜなら、各キューには異なる数の作業者が割り当てられるからです。私はroute_taskプロパティを使用する必要がありますが、私はいくつかのオプションを試して成功していないと読んでいた。セロリ1つのブローカー複数の待ち行列と作業者
私はこのdoc以下celery route_tasks docs
私の目標は4人の労働者、各タスクのいずれかを実行されるだろうし、異なるキューに異なる労働者から仕事を混在させないでください。それが可能だ?それは良いアプローチですか?
私が何か間違ったことをやっている場合、私はそれがここ
を動作させるために私のコードを変更することが幸せになるこれまでのところ、私のconfigです
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"
実行セロリ1つのワーカー各キューについて
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&
基本的に私の問題は、ドキュメントと混乱していました。私は3.xバージョンを使用していましたが、4.xのドキュメントを使用していました... – cralfaro