Python使用WebSocket client无法连接Binance API 运行后直接退出无响应
问题原因
新版websocket-client库对回调函数的参数签名要求有调整,你当前定义的on_open、on_close函数参数数量不符合库的调用要求,触发参数不匹配错误后连接会直接终止,所以没有任何输出就直接退出程序。
解决方案
调整回调函数的参数配置,同时新增错误回调方便后续排查问题,修正后的可运行代码如下:
import websocket import ssl SOCKET = "wss://stream.binance.com:9443/ws/btcusdt@kline_1m" def on_open(ws): print('connection: successful') def on_close(ws, close_status_code, close_msg): print('connection: lost') print(f"关闭状态码: {close_status_code}, 关闭信息: {close_msg}") def on_message(ws, message): print('收到行情数据:', message) def on_error(ws, error): print('连接发生错误:', error) ws = websocket.WebSocketApp(SOCKET, on_open=on_open, on_close=on_close, on_message=on_message, on_error=on_error) # 新增ssl配置避免部分环境下SSL验证失败问题 ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})
补充排查点
如果修改代码后仍然运行异常,可先执行命令卸载冲突的同名库:pip uninstall websocket
再重新安装正确的依赖:pip install websocket-client
确认依赖安装正确后再运行代码,如果还是连接失败,可检查当前网络是否可以正常访问Binance的相关服务。
内容的提问来源于stack exchange,提问作者pycoder
相关产品推荐
相关产品推荐

