【发布时间】:2016-01-28 18:28:23
【问题描述】:
我注意到 celery 一直在向多个队列发送任务,并且两个队列上的工作人员都在执行任务。
我的队列定义是:
CELERY_QUEUES = (
Queue('default', Exchange('default'), routing_key='default'),
Queue('client1', Exchange('client1'), routing_key='client1'),
Queue('images', Exchange('media'), routing_key='media.images'),
)
当我停止所有工人后,我运行:
>>> tasks.ping.apply_async(queue='default')
我可以看到任务出现在两个default 和client1 队列中:
$ redis-cli -c llen default
(integer) 1
$ redis-cli -c llen client1
(integer) 1
这仅适用于default 队列。将其直接发送到client1 队列只会将其添加到那里:
>>> tasks.ping.apply_async(queue='client1')
$ redis-cli -c llen default
(integer) 1
$ redis-cli -c llen client1
(integer) 2
images 队列永远不会错误地接收任务。
这是带有 Redis 代理的 Celery 3.1.15。
【问题讨论】: