Flask-SocketIO报错:'Server'对象无'get_environ'属性,求解决
问题排查与解决:AttributeError: 'Server' object has no attribute 'get_environ'
问题根源
这个错误是由于Flask-SocketIO与python-socketio/python-engineio版本不兼容导致的。你当前使用的Flask-SocketIO 5.3.4要求配套的python-socketio版本为5.x系列,但你安装的是4.6.0,版本差异导致Flask-SocketIO调用了python-socketio中不存在的get_environ方法。
解决方案:调整依赖版本
将依赖版本更新为兼容组合,推荐以下经过验证的版本:
Flask==2.3.2 Flask-Cors==4.0.0 Flask-SocketIO==5.3.4 python-engineio==4.9.0 python-socketio==5.11.2
操作步骤
- 卸载现有不兼容的库:
pip uninstall -y python-engineio python-socketio
- 安装指定版本的依赖:
pip install python-engineio==4.9.0 python-socketio==5.11.2
验证代码
你的server.py代码本身无逻辑问题,版本适配后,建议补充启动代码以确保服务正常运行:
app = Flask(__name__, static_folder="../dist", static_url_path="") CORS(app, resources={r"/*": {"origins": "*"}}) socketio = SocketIO(app, logger=True, engineio_logger=True, cors_allowed_origins="*") @socketio.on("connect") def handle_connect(): print("Connected") @socketio.on("disconnect") def handle_disconnect(): print("Client has disconnected") if __name__ == '__main__': socketio.run(app, debug=True, host='0.0.0.0')
内容的提问来源于stack exchange,提问作者huardy
相关产品推荐
相关产品推荐

