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

har*_*k24 12 django websocket django-channels

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

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

谢谢

小智 5

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

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

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

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

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

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