首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建芹菜多队列

创建芹菜多队列
EN

Stack Overflow用户
提问于 2015-02-05 10:37:36
回答 1查看 2.8K关注 0票数 1

我有一个配置文件,其中包含一个类别列表

代码语言:javascript
复制
cat_link = {'cat1':[link1,link2....],'cat2':[link3,link4....],'cat3':[link5,link6....],'cat4':[link7,link8....]}

我希望根据配置文件中定义的类别总数创建队列,并且在处理特定类别的链接时,每个队列都应该处理自己的链接集。

处理链接的任务是相同的。我只希望每个类别链接都应该在它们的特定队列中被处理。

应该是这样的:-

代码语言:javascript
复制
for category, link in cat_link.iteritems():
    process_link.apply_async(args=[link],
                             queue=category,)

如何创建动态队列,请记住,将来可以删除/添加任何类别?

我的celeryconfig应该是什么样的?目前它如下所示:-

代码语言:javascript
复制
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??

我见过不同任务的不同队列,但是对于同一任务是否可能有不同的队列呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-05 11:14:31

如果动态地想要不同的队列,

代码语言:javascript
复制
process_link.apply_async(args=[link1],
                         queue=queue1)

process_link.apply_async(args=[link2],
                         queue=queue2)

此外,您还必须在配置文件中插入以下内容

代码语言:javascript
复制
CELERY_CREATE_MISSING_QUEUES = True

但是,您必须关心的一件事是,在启动worker时,必须将-Q‘队列名称’作为参数传递。

对于ex

代码语言:javascript
复制
celery -A proj worker -l info -Q queue1,queue2

用于从队列“队列名”中消费

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28341727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档