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,但没有删除消息【问题讨论】:
有同样的问题:当我安装eventlet
或 gevent
我的发射停止工作。问题解决了吗?
【参考方案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 以提高性能的主要内容,如果未能解决你的问题,请参考以下文章