gpt4 book ai didi

python - Flask socket-io,有时客户端调用会卡住服务器

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:31 26 4
gpt4 key购买 nike

我偶尔会遇到 Flask socket-io 卡住的问题,但我不知道如何修复它。

我的客户端连接到我的套接字 io 服务器并执行一些聊天 session 。效果很好。但由于某种原因,有时来自客户端,有一些调用阻塞了整个服务器(服务器被卡在进程中,所有其他调用都被卡住)。奇怪的是,只要客户端应用程序没有完全关闭,服务器就可以被阻止。这是一个ios应用程序/网页,我必须完全关闭该应用程序或safari页面。关闭套接字本身,甚至释放它并不能解决问题。当应用程序在后台时,套接字将关闭并释放,但问题仍然存在。

这是一个小型服务器,它同时处理 html 页面和套接字服务器,因此我不知道是套接字本身还是 html 阻止了进程。但每次服务器卡住时,日志都会显示一些套接字调用。

这是我配置服务器的方法:

socketio = SocketIO(app, ping_timeout=5)
socketio.run(app, host='0.0.0.0', port=5001, debug=True, ssl_context=context)

所以我的问题是:什么可以卡住服务器(当我长时间打开应用程序或网站而不执行任何操作时,这似乎会发生)。如果我正常使用这些服务,服务器永远不会卡住。以及如何防止这种情况发生(即使我不知道是什么原因导致这种情况,有没有办法盲目地阻止我的服务器卡在通话中?

谢谢您的解答

最佳答案

根据您上面的评论,您正在使用 Flask 开发 Web 服务器,而没有借助 eventlet 或 gevent 等异步框架。除了这个选项效率非常低之外,您应该知道这个 Web 服务器没有经过战斗测试,它是为了在开发过程中进行短暂的测试而设计的。我不确定它是否能够运行很长时间,特别是在 Flask-SocketIO 让它经历的异常条件下,而常规 Flask 应用程序不会执行这些条件。我认为您很可能遇到了 Werkzeug 中的一些不起眼的错误,导致其挂起。

我的建议是您安装 eventlet 并重试。您需要做的就是 pip install eventlet,并且假设您没有传递显式的 async_mode 参数,那么只需安装此包 Flask-SocketIO 就应该配置自身来使用它.

我还会删除显式超时设置。在几乎所有情况下,默认值足以维持健康的连接。

关于python - Flask socket-io,有时客户端调用会卡住服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com