【问题标题】:What role does Redis serve in Django ChannelsRedis 在 Django Channels 中扮演什么角色
【发布时间】:2020-12-24 12:57:33
【问题描述】:

最近一直在用django channels做它的支持websocket protocol,我用的是微服务的方式,其他组件通过django通道连接,但是我要为每个连接写一个Consumer class用于接收和处理,对于例子class Consumer(AsyncWebsocketConsumer):,仍然使用redis,指出这部分是官方文档作为通道层存储,所以是作为消息队列缓存或其他常用功能是否存在?

我写信是为了了解每个连接是否有一个消费者,以及我是否可以将其视为一个消息队列

但是,我没有找到相关材料来支持我的观点。

您能告诉我我的理解是否正确吗?真诚希望您能提供相关资料以供参考,无论是否正确。

【问题讨论】:

    标签: django redis django-channels


    【解决方案1】:

    这取决于您如何使用它。 django-channel_layers 中 redis 的主要目的是存储不同消费者实例相互通信所需的必要信息。

    例如,在频道文档的tutorial 部分中,很明显Redis 被用作频道名称和组名称的存储层。这些存储在 Redis 中,以便可以从任何消费者实例访问它们。例如,如果我创建一个名为“用户”的组,然后向其中添加 3 个不同的频道名称,则此信息将存储在 Redis 中。现在,每当我想向组中的通道发送数据时,我都可以简单地从我的消费者那里引用该组,Django-channels 将自动检索存储在 Redis 中该组下的通道名称。

    另一方面,如果您想以非常规的方式使用消费者,即作为后台工作人员,那么 Redis 将成为消息队列。这是因为当您发送包含要由其中一个后台工作人员(“消费”任务的消费者)完成的任务的消息时,这些消息必须存储在某个地方,以便后台工作人员在完成其他任务时可以检索它们.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多