Python 创建芹菜多个队列

Python 创建芹菜多个队列,python,celery,Python,Celery,我有一个包含类别列表的配置文件 cat_link = {'cat1':[link1,link2....],'cat2':[link3,link4....],'cat3':[link5,link6....],'cat4':[link7,link8....]} 我想根据配置文件中定义的类别总数创建队列,而且当我处理特定类别的链接时,每个队列应该处理自己的链接集 处理链接的任务是相同的。我只想知道,每个类别的链接都应该在它们的特定队列中进行处理 应该是这样的:- for category, link

我有一个包含类别列表的配置文件

cat_link = {'cat1':[link1,link2....],'cat2':[link3,link4....],'cat3':[link5,link6....],'cat4':[link7,link8....]}
我想根据配置文件中定义的类别总数创建队列,而且当我处理特定类别的链接时,每个队列应该处理自己的链接集

处理链接的任务是相同的。我只想知道,每个类别的链接都应该在它们的特定队列中进行处理

应该是这样的:-

for category, link in cat_link.iteritems():
    process_link.apply_async(args=[link],
                             queue=category,)
我应该如何创建动态队列,记住将来可以删除/添加任何类别?

我的celeryconfig应该是什么样子?目前情况如下:-

BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp://'

CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT=['json']
CELERY_TIMEZONE = 'Europe/Oslo'
CELERY_ENABLE_UTC = True

#Should I read my `cat_link` config setting in a loop and then create the queues??

我看到不同任务有不同的队列,但同一任务有可能有不同的队列吗?

如果您希望动态地使用不同的队列

process_link.apply_async(args=[link1],
                         queue=queue1)

process_link.apply_async(args=[link2],
                         queue=queue2)
您还必须在配置文件中插入以下内容

CELERY_CREATE_MISSING_QUEUES = True
但您必须注意的一点是,在启动worker时,必须将-Q‘queue name’作为参数传递

celery -A proj worker -l info -Q queue1,queue2

用于从该队列“queuename”消费,如果您希望动态使用不同的队列

process_link.apply_async(args=[link1],
                         queue=queue1)

process_link.apply_async(args=[link2],
                         queue=queue2)
您还必须在配置文件中插入以下内容

CELERY_CREATE_MISSING_QUEUES = True
但您必须注意的一点是,在启动worker时,必须将-Q‘queue name’作为参数传递

celery -A proj worker -l info -Q queue1,queue2

感谢您从队列“queuename”中消费。

感谢@latheef的快速响应。然而,在这个链接上,我看到用户使用了kombu import Exchange的
,队列
。有什么重要的吗?我不明白。芹菜使用名为“芹菜”的默认队列。现在此链接说明如何在不动态创建的情况下设置芹菜队列。还告诉工作人员从新队列开始消费,如果工作进程已经启动。我如何使用新创建的队列在守护进程中运行芹菜。?您可以使用
supervisor
对该工作进程进行后台监控。我需要动态添加一个作业,一个作业包含许多任务。所有任务都是相同的。如何使不同的作业具有不同的队列名称,并且只有一个工作人员处理所有队列?以编程方式输入。感谢@latheef的快速响应。然而,在这个链接上,我看到用户使用了kombu import Exchange的
,队列
。有什么重要的吗?我不明白。芹菜使用名为“芹菜”的默认队列。现在此链接说明如何在不动态创建的情况下设置芹菜队列。还告诉工作人员从新队列开始消费,如果工作进程已经启动。我如何使用新创建的队列在守护进程中运行芹菜。?您可以使用
supervisor
对该工作进程进行后台监控。我需要动态添加一个作业,一个作业包含许多任务。所有任务都是相同的。如何使不同的作业具有不同的队列名称,并且只有一个工作人员处理所有队列?以编程方式输入。