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

时间:2019-05-01 07:00:38

标签: django websocket django-channels

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

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

谢谢

1 个答案:

答案 0 :(得分:2)

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

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

Websockets进入称为Daphne的服务器(Daphne是用于ASGI和ASGI-HTTP的HTTP,HTTP2和WebSocket协议服务器,开发来为Django通道提供动力)可以处理数百个或潜在的数千个同时打开的同时连接。

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

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

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