【发布时间】:2017-08-15 08:01:22
【问题描述】:
我有一个名为tasks.py 的python 文件,我在其中定义了4 个单一任务。我想配置 celery 以使用 4 个队列,因为每个队列都会分配不同数量的工人。我正在阅读我应该使用 route_task 属性,但我尝试了几个选项但没有成功。
我在关注这个文档celery route_tasks docs
我的目标是运行 4 个工作人员,每个任务一个,并且不要将来自不同工作人员的任务混合在不同的队列中。这是可能的?这是个好方法吗?
如果我做错了什么,我很乐意更改我的代码以使其正常工作
这是我目前的配置
tasks.py
app = Celery('tasks', broker='pyamqp://guest@localhost//')
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"
为每个队列运行 celery 一个工人
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 的文档...epic fail