django-channels 可以处理多少个并发连接?

How many concurrent connections can django-channels handle?

我正在将 Django 频道用于聊天应用程序。此应用程序可能会在一段时间内扩展到 10 万个并发用户。我想知道 Django Channels 可以处理多少个并发连接。基本上,我将它与 XMPP 服务器进行比较,XMPP 是可扩展性的更好选择还是我应该继续使用 Django 通道?

此外,我正在使用redis层作为通道层。我想知道 Redis 层是否会在某个时间点成为瓶颈?

谢谢

A​​SGI(异步服务器网关接口)旨在提供具有异步功能的 Python 网络服务器、框架和应用程序之间的标准接口。

在 Django Channels 中,即使 Django 本身处于同步模式,它也可以异步处理连接和套接字。

Websockets 进入名为 Daphne 的服务器(Daphne 是用于 ASGI 和 ASGI-HTTP 的 HTTP、HTTP2 和 WebSocket 协议服务器,开发用于支持 Django Channels)可以同时处理数百甚至数千个同时打开的连接。

websocket 上的任何事件(连接、收到消息)都会发送到通道层,这是一种先进先出队列

Django 工作进程同步从队列中获取一条消息,对其进行处理,然后循环返回获取另一条消息。

因此,打开的连接数会影响您 运行 的 Daphne 实例数量。事件的吞吐量会影响您 运行.

的工作人员数量