升级Python后Flask-SocketIO报错:Server.emit()不识别broadcast参数
问题解决:Server.emit() 收到意外关键字参数 'broadcast'
问题原因
Flask-SocketIO 从4.x版本升级到5.x版本后,emit方法的参数规则发生变更:当指定room参数时,不再允许同时传递broadcast=True——因为定向到特定房间的发送逻辑,已经覆盖了原broadcast参数的作用场景。
修复方案
根据实际需求修改代码:
- 若需向
request.sid对应的单个客户端发送消息,直接移除broadcast=True参数:socketio.emit('message', response_data, room=request.sid) - 若需向所有客户端广播消息(排除当前发送者),保留
broadcast=True并移除room参数:socketio.emit('message', response_data, broadcast=True)
依赖版本对比
升级后报错的依赖版本:
Werkzeug~=3.0.3 Flask~=2.2.5 Flask-SocketIO~=5.3.6 python-engineio~=4.5.0 python-socketio~=5.8.0
此前正常运行的依赖版本:
Werkzeug~=2.0.3 Flask~=2.1.0 Flask-SocketIO~=4.3.2 python-engineio~=3.14.2 python-socketio~=4.6.1
内容的提问来源于stack exchange,提问作者Kanchan
相关产品推荐
相关产品推荐

