Websocket使用者可以处理多少数据?

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

我使用Django渠道构建了一个简单的应用程序,其中消费者从外部服务接收数据,然后该消费者将该数据发送给另一个消费者的某些订户。我是websocket的新手,我有点担心:消费者正在接收大量数据,每秒100条(或更多)JSON记录的数量级。我应该在什么时候担心该服务崩溃或遇到性能问题?我的工作有某种限制吗?

python django websocket django-channels
1个回答
1
投票

没有明确的限制,但是,对于使用者的每个实例(开放连接),您一次只能处理一个WS消息,这毫无用处。

因此,如果您只有一个Websocket连接,并且正在通过该连接发送大量的WS消息,如果使用者确实在处理这些消息(例如,将它们写入db),则消息队列可能会填满,并且您会得到一个错误。

他们有一些解决方法,

  1. 打开多个ws连接并分担负载

  2. 在您的使用者中进行任何需要花费时间的工作之前,将其放置在work queue上并有一些后台任务(您不等待)消耗它。

对于第二个选项,在您的on_connect方法中创建此后台队列并处理关闭它/等待它刷新on connect方法中的所有内容可能是一个好主意。

-

[如果您期望大量的数据并且不想为昂贵的(高内存)VM分叉,则最好使用未使用python编写的服务器。

我对python开发人员的建议是https://docs.vapor.codes/4.0/websockets/这是一个Swift服务器框架,从语言上讲,如果Swift与TypeAnotated python非常接近,因此比其他高性能选项更容易获得python dev。

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