我写了一个Django-Project,它通过 my_task.delay() 提示不同的任务异步 . 问题是随着项目变得越来越大,正确地路由任务真的很困难 - 我开始编写的任务只是为了组合不同的任务,这使得代码在一段时间后变得混乱 .

当我阅读一些RabbitMQ文档时,我遇到了一个解决方案,它可以更好地构建我的项目,依赖于Exchange . 交换可以将消息发布到Cosumer可以使用它的多个队列,简而言之:

Publish/Subscribe in RabbitMQ Documentation

RabbitMQ-Documentation描述了Pika的解决方案,它是RabbitMQ比Celery更低级别的客户端 .

Celery-Documentation在其Documentation中描述了这种情况,但没有描述如何创建一个Producer,它生成发送到Exchange的消息,并将其分发到各种队列,如上图所示 . 它只描述了如何消息队列和send tasks - 但我希望这个由交易所进行管理 .

我发现芹菜依赖于它的Kombu有一个功能,通过Producer向Exchange发送消息,但我找不到任何文档如何在celery-django中使用它 .

我怎样才能在芹菜中实现所描述的程序?

PS:StackOverflow上已经有一个similar question建议使用像Chain和Group of Celery这样的原语,但这与我理解的Exchange范式相矛盾 .