为什么 django-channel 中需要 celery、rabbitmq 来完成它们的工作?

问题描述 投票:0回答:1

我今天第一次阅读 django-channels 的文档,发现了以下行

Channels will take care of scheduling them and running them all in parallel.
这是否意味着它也执行 celery 任务?我曾经对 celery、rabbitmq、mqtt 感到困惑。我以为我已经很清楚了,我对celery、rabbitmq和mqtt的理解是

celery - 后台作业,任务调度

rabbitmq - 消息代理,向工作人员发送消息

mqtt - 这也是另一个消息队列

根据我的理解,celery 既执行后台作业任务,也执行rabbitmq 任务或mqtt 任务。

所以我的问题是,当使用django-channel时,我们需要使用那些列出的堆栈(celery,rabbitmq)吗?如果需要,为什么需要?我查阅了几篇文章,但无法清楚地获得见解。我觉得他们的用例有些相似。谁能用现实生活中的例子来消除我的困惑?

django rabbitmq celery django-channels
1个回答
0
投票

这个问题很老了,但我问了自己同样的问题,所以这里有一个答案:如官方Django Channels文档中所述,层后端(示例中是redis,但它可以是RabbitMQ,或PostGres,等),是可选的。

Django Channel 确实可以自行处理 ASGI 请求,但指定另一个层后端可能有助于与其他应用程序进行交互,例如,这些应用程序可能已经将消息推送到 RabbitMQ 引擎,具体取决于您的架构。

© www.soinside.com 2019 - 2025. All rights reserved.