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

python-binance ThreadedWebSocketManager基础示例失效求助

问题分析与解决方案

你的脚本仅输出btceur@kline_1m但未触发process_message,结合使用的python-binance v1.0.19(2023-08)和Python 3.12.3,可从以下方向排查修复:

1. 版本兼容性问题

Python 3.12在2023年10月发布,而python-binance v1.0.19早于该版本,存在线程模块的兼容性冲突(Python 3.12对threading模块做了底层改动)。

解决方法:

  • 降级Python到3.11.x版本,这是与v1.0.19兼容的稳定版本;
  • 或升级python-binance至v1.0.20及以上版本(该版本修复了Python 3.12兼容问题),执行命令:
    pip install python-binance --upgrade
    

2. 移除不必要的API密钥

K线WebSocket属于公共市场数据端点,无需API密钥/签名认证。你传入密钥可能干扰连接逻辑:

修改脚本,初始化ThreadedWebsocketManager时去掉密钥参数:

from binance import ThreadedWebsocketManager

def process_message(msg):
    print("message type: {}".format(msg['e']))
    print(msg)

# 公共数据无需密钥,直接初始化
twm = ThreadedWebsocketManager()
twm.start()

ret = twm.start_kline_socket(callback=process_message, symbol='BTCEUR', interval='1m')
print(ret)

twm.join()

3. 验证网络连接

检查本地网络是否拦截了Binance的WebSocket连接:

  • 使用命令行工具测试(需安装wscat):
    wscat -c wss://stream.binance.com:9443/ws/btceur@kline_1m
    
    若能收到JSON格式的K线数据,说明网络正常;否则排查防火墙、代理或运营商限制。

4. 添加错误捕获排查问题

在脚本中加入错误回调,查看连接失败细节:

from binance import ThreadedWebsocketManager
import logging

# 开启日志输出连接细节
logging.basicConfig(level=logging.DEBUG)

def process_message(msg):
    print("message type: {}".format(msg['e']))
    print(msg)

def error_callback(msg):
    print("连接错误信息:")
    print(msg)

twm = ThreadedWebsocketManager()
twm.start()

# 绑定错误回调
ret = twm.start_kline_socket(callback=process_message, symbol='BTCEUR', interval='1m', on_error=error_callback)
print(ret)

twm.join()

内容的提问来源于stack exchange,提问作者Lukas Eber

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 16:08:11