Polygon.io WebSocket on_open函数未触发问题求助
解决Polygon.io WebSocket on_open函数未触发的问题
问题说明
尝试通过Polygon.io的WebSocket获取股票数据流,但WebSocketApp的on_open函数始终未执行,运行代码后无预期的"OPEN"输出。但能通过终端命令正常连接该WebSocket,环境为M1 Mac,代码在虚拟环境中运行,代码示例如下:
import websocket, json from secrety import * socket = 'wss://socket.polygon.io/stocks' def on_open(ws): print("OPEN") ws = websocket.WebSocketApp(socket, on_open=on_open) ws.run_forever()
排查与解决步骤
升级WebSocket库版本
M1 Mac对旧版本websocket-client可能存在兼容性问题,先升级到最新版:pip install --upgrade websocket-client添加错误回调定位问题
原代码缺少错误处理逻辑,无法得知连接失败原因,新增on_error和on_close函数排查问题:import websocket, json from secrety import * socket = 'wss://socket.polygon.io/stocks' def on_open(ws): print("OPEN") # Polygon.io要求连接后必须发送API密钥认证,否则会被服务器断开 auth_data = {"action": "auth", "params": API_KEY} ws.send(json.dumps(auth_data)) def on_error(ws, error): print(f"ERROR: {error}") def on_close(ws, close_status_code, close_msg): print(f"CLOSED: {close_status_code} - {close_msg}") ws = websocket.WebSocketApp( socket, on_open=on_open, on_error=on_error, on_close=on_close ) ws.run_forever()必须发送认证信息
Polygon.io的WebSocket服务强制要求连接成功后发送API密钥完成认证,否则服务器会主动断开连接,导致on_open可能还未执行就结束。确保secrety.py中存在有效的API_KEY变量,并在on_open中发送认证请求。重新安装适配M1架构的依赖
若虚拟环境中的依赖是通用架构包,可能引发兼容性问题,重新安装适配M1的版本:pip uninstall websocket-client pip install websocket-client --no-binary :all:
内容的提问来源于stack exchange,提问作者morgan4
相关产品推荐
相关产品推荐

