WebSocket 传输不可用。安装 eventlet 或 gevent 和 gevent-websocket 以提高性能

Posted

技术标签:

【中文标题】WebSocket 传输不可用。安装 eventlet 或 gevent 和 gevent-websocket 以提高性能【英文标题】:WebSocket transport not available. Install eventlet or gevent and gevent-websocket for improved performance 【发布时间】:2020-07-14 10:38:03 【问题描述】:

我正在使用套接字 io 和烧瓶应用程序。一切正常,但我总是收到此消息。 这是我的初始化:

app = Flask(__name__)
app.config['SECRET_KEY'] = APP_SECRET_KEY
jwt = JWTManager(app)
cors = CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'
# app.config['transports'] = 'websocket'
socketio = SocketIO(app, cors_allowed_origins="*", async_mode='threading')

socketio.run(app, debug=True)

什么可能导致这个警告,它是什么意思?

控制台如下所示:

已尝试安装 gevent 和 eventlet,但没有删除消息

【问题讨论】:

有同样的问题:当我安装 eventletgevent 我的发射停止工作。问题解决了吗? 【参考方案1】:

通常在实例化服务器时不包括async_mode 选项。通过使用async_mode='threading',您将强制服务器忽略 eventlet 和/或 gevent,并使用不支持 WebSocket 的更基本的服务器。

所以删除async_mode,然后安装 eventlet(或 gevent 和 gevent-websocket)。现在您的服务器将可以访问 WebSocket 并且不会显示警告。

【讨论】:

如果我删除它,那么请求会阻塞主线程并且监听发射不起作用 好的,那么您将无法使用 eventlet 或 gevent,因此您的服务器将不支持 WebSocket,因此它会降低性能,因此会出现警告。我会尝试解决阻塞问题,以便您可以使用 WebSocket。【参考方案2】:

如果是执行python文件时出现的问题 试试pip install eventlet 它对我有用你也可以试试pip install gevent 有时这也可以解决问题!

【讨论】:

以上是关于WebSocket 传输不可用。安装 eventlet 或 gevent 和 gevent-websocket 以提高性能的主要内容,如果未能解决你的问题,请参考以下文章

WebSocket传输图片

用蓝牙传输显示不支持的内容格式

python怎么连接websocket

如何将音频数据从 Android 流式传输到 WebSocket 服务器?

websocket可以做什么

iOS即时通讯 WebSocket Socket