首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python SocketIO KeyError:‘会话已断开’

Python SocketIO KeyError:‘会话已断开’
EN

Stack Overflow用户
提问于 2021-10-27 22:18:08
回答 1查看 386关注 0票数 0

在一个运行在RaspberryPi上的小型Flask we服务器上,大约有10-20个客户端,我们周期性地收到以下错误:

代码语言:javascript
运行
复制
Error on request:
Traceback (most recent call last):
  File "/home/pi/3D_printer_control/env/lib/python3.7/site-packages/werkzeug/serving.py", line 270, in run_wsgi
    execute(self.server.app)
  File "/home/pi/3D_printer_control/env/lib/python3.7/site-packages/werkzeug/serving.py", line 258, in execute
    application_iter = app(environ, start_response)
  File "/home/pi/3D_printer_control/env/lib/python3.7/site-packages/flask/app.py", line 2309, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/pi/3D_printer_control/env/lib/python3.7/site-packages/flask_socketio/__init__.py", line 43, in __call__
    start_response)
  File "/home/pi/3D_printer_control/env/lib/python3.7/site-packages/engineio/middleware.py", line 47, in __call__
    return self.engineio_app.handle_request(environ, start_response)
  File "/home/pi/3D_printer_control/env/lib/python3.7/site-packages/socketio/server.py", line 360, in handle_request
    return self.eio.handle_request(environ, start_response)
  File "/home/pi/3D_printer_control/env/lib/python3.7/site-packages/engineio/server.py", line 291, in handle_request
    socket = self._get_socket(sid)
  File "/home/pi/3D_printer_control/env/lib/python3.7/site-packages/engineio/server.py", line 427, in _get_socket
    raise KeyError('Session is disconnected')
KeyError: 'Session is disconnected'  

该错误是从python-socketio内部自动生成的。这个错误的真正含义是什么?我如何防止或抑制它?

EN

回答 1

Stack Overflow用户

发布于 2021-10-27 22:18:08

据我所知,这通常意味着服务器无法跟上向所有客户端提供数据的步伐。

一些可能的缓解技术包括断开非活动客户端,尽可能减少发送的数据量,以更大的块发送实时数据,或升级服务器。如果您需要大量的数据吞吐量,可能还有比socketIO更好的选择。

我已经能够通过在socketIO构造函数中设置一个非常高的ping速率和低的超时来重现它:

代码语言:javascript
运行
复制
from flask_socketio import SocketIO

socketio = SocketIO(engineio_logger=True, ping_timeout=5, ping_interval=5)

这意味着服务器必须向所有客户端发送大量消息,而它们没有很长的响应时间。然后,我打开大约10个客户端,开始看到KeyError

进一步调试我们的服务器,发现一个进程正在发布大量的实时数据,它只在几个客户端上运行良好,但一旦我达到大约12个客户端,就开始发出偶尔的KeyError

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69746102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档