Celery:如果未指定-Q选项,则使用哪些队列

时间:2017-06-08 06:45:46

标签: python celery

根据Celery documentation-Q/--queues命令行选项可用于:

  

-Q, - 队列

     

为此工作人员启用的队列列表,以逗号分隔。默认情况下,启用所有已配置的队列。示例: -Q video,image

但是我不明白这里配置配置队列是什么意思。这是否意味着Celery已知的所有队列,包括默认队列?或者只是task_queues配置选项中定义的那些? task_create_missing_queues选项会影响这个吗?

1 个答案:

答案 0 :(得分:1)

如果您还没有配置任何内容,它将从celery队列消耗,您可以从日志中看到

celery worker -A t 

 -------------- celery@pavilion v4.0.2 (latentcall)
---- **** ----- 
--- * ***  * -- Linux-4.4.0-79-generic-x86_64-with-Ubuntu-16.04-xenial 2017-06-09 10:39:14
-- * - **** --- 
- ** ---------- [config]
- ** ---------- .> app:         tasks:0x7f15cf9cdfd0
- ** ---------- .> transport:   amqp://guest:**@localhost:5672//
- ** ---------- .> results:     rpc://
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery

您也可以将celery配置为默认使用一组队列,如此

from celery import Celery
from kombu import Queue


app = Celery(broker='amqp://guest@localhost//', backend='rpc')
app.conf.task_queues = (Queue('foo'), Queue('bar'))

现在所有工作人员默认使用foobar个队列。

-------------- [queues]
               .> bar              exchange=celery(direct) key=celery
               .> foo              exchange=celery(direct) key=celery