You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 01:50:27