为每个芹菜任务

时间:2016-04-11 17:41:23

标签: rabbitmq celery

我使用芹菜3.1和rabbitmq作为经纪人 问题是当我发布一个任务(即task.delay())消息时 在rabbitmq中创建,带有包含uniqueid的回复标题(比如123)。 由于这个,rabbitmq正在创建一个名为123的队列,这对于发布的每个任务都会发生。

假如我运行了10次任务,则会创建10个回复队列。我甚至不想回复去rabbitmq,目前我将CELERY_RESULT_BACKEND配置为rpc.Here是配置

BROKER_URL ='amqp://来宾@ localhost //'   CELERY_RESULT_BACKEND ='rpc://'

任务       @ app.task(名称= “tasks.multiplynumbers”,绑定=真,default_retry_delay = 5,MAX_RETRIES = 2,串行= 'JSON',acks_late =真,track_started =真)

def multiply(self,x,y):

try:

    return x * y

except Exception as exc:

    raise self.retry(exc=exc)

以下是信息:

reply_to: 40872e4f-10fc-313d-a48d-13aa94419f20

correlation_id:25d6f28a-9b18-49c0-950c-19af7af52770

优先级:0

delivery_mode:2

标头: content_encoding:utf-8

content_type:application / json

有效载荷

265个字节 编码:字符串 {“taskset”:null,“task”:“reotasks.multiplynumbers”,“errbacks”:null,“timelimit”:[null,null],“callbacks”:null,“utc”:true,“chord”:null ,“expires”:null,“args”:[3,8],“retries”:0,“id”:“25d6f28a-9b18-49c0-950c-19af7af52770”,“eta”

发布上述消息后,将创建名为 40872e4f-10fc-313d-a48d-13aa94419f20 的队列。

有没有人遇到过这种情况?非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

经过进一步的研究,我发现celery_result_backend何时被设置为&rcc://'并使用rabbitmq作为代理,似乎每个任务都使用reply-to标头发布,并根据以下链接中的信息创建新队列:

https://www.rabbitmq.com/direct-reply-to.html

如果我们可以控制哪个队列发布结果以及任何最佳实践来处理

,那将是件好事。