我正在使用flask和flask socketio构建一个web接口/数据api,用于websocket通信。我想开始使用gevent/gevent websocket、gunicorn和nginx来进行负载平衡,转向更易于开发的设置。但是,在安装gevent和gevent websocket之后,在启动socketio服务器时仍会收到一条警告消息:
WebSocket transport not available. Install eventlet or gevent and gevent-websocket for improved performance.
根据烧瓶记录,
当应用程序处于调试模式时,Werkzeug开发服务器仍在socketio.run()中使用并正确配置。在生产模式下,使用eventlet web服务器(如果可用),否则使用gevent web服务器。如果未安装eventlet和gevent,则使用werkzeug开发web服务器。
这意味着gevent的使用应该作为flask socketio的一部分在后台自动化。我用pip list检查了python的安装,确认安装了gevent 1.3.4和gevent websocket 0.10.1。以下是socketio服务器的初始化代码:
App.Py
flaskApp = Flask(__name__)
flaskApp.config['SESSION_TYPE'] = 'filesystem'
Session(flaskApp)
socketio = SocketIO(flaskApp, async_mode='threading', manage_session=False)
def createApp():
flaskApp.secret_key = "super secret"
socketio.run(flaskApp, host='0.0.0.0', port=80)
开始.py
app.register_blueprint(monitor.blueprint)
...
createApp()
为什么烧瓶插座没有检测到我的gevent安装?