auto_trade_sys/trading_system/WEBSOCKET_TROUBLESHOOTING.md
薇薇安 0fc718dbe3 a
2026-01-14 13:29:35 +08:00

3.6 KiB
Raw Blame History

WebSocket 故障排除指南

常见错误及解决方案

错误1: __init__() got an unexpected keyword argument 'throw_exception_if_unrepairable'

原因:

  • unicorn-binance-websocket-api 2.4.0 版本不支持 throw_exception_if_unrepairable 参数
  • 该参数可能在新版本中被移除或改名

解决方案:

  • 已修复:移除了不支持的参数
  • 已添加:多种初始化方式的回退机制
  • 已优化:更好的错误日志输出

修复后的行为:

  1. 首先尝试使用 high_performance=True 参数
  2. 如果失败,尝试只使用 exchange 参数
  3. 如果还是失败,尝试使用位置参数
  4. 所有方式都失败时,输出详细的错误信息

错误2: ModuleNotFoundError: No module named 'unicorn_binance_websocket_api'

原因:

  • 未安装 unicorn-binance-websocket-api 依赖

解决方案:

cd trading_system
pip install -r requirements.txt
# 或单独安装
pip install unicorn-binance-websocket-api==2.4.0

错误3: WebSocket连接失败

可能原因:

  1. 网络连接问题
  2. 防火墙阻止
  3. Binance服务器问题

检查步骤:

# 检查网络连接
ping stream.binance.com

# 检查DNS解析
nslookup stream.binance.com

解决方案:

  • 检查服务器网络配置
  • 检查防火墙规则
  • 等待Binance服务恢复

错误4: WebSocket订阅失败

可能原因:

  1. 订阅的交易对数量过多
  2. 交易对格式错误
  3. WebSocket连接不稳定

解决方案:

  • 减少订阅数量(调整 WEBSOCKET_SUBSCRIBE_COUNT
  • 检查交易对格式(应该是大写,如 BTCUSDT
  • 查看日志中的详细错误信息

验证WebSocket是否正常工作

1. 查看启动日志

正常启动应该看到:

✓ Unicorn WebSocket管理器启动成功 (测试网: False)
  交易所: binance.com-futures
✓ 已成功订阅 100 个交易对的实时价格流
✓ 价格数据将通过WebSocket实时更新减少REST API调用

2. 查看运行时日志

正常运行时应该看到:

✓ [WebSocket] 从缓存获取 BTCUSDT 价格: 43250.50000000 (缓存年龄: 2.3秒)

3. 查看统计信息

每次扫描后应该看到:

WebSocket状态: 订阅=100个交易对, 缓存=100个价格, 活跃流=1个

调试技巧

启用详细日志

config.py 或环境变量中设置:

LOG_LEVEL = 'DEBUG'

检查WebSocket状态

在代码中添加:

if client.unicorn_manager:
    stats = client.unicorn_manager.get_stream_statistics()
    print(f"WebSocket统计: {stats}")

手动测试WebSocket连接

from unicorn_binance_websocket_api.manager import BinanceWebSocketApiManager

manager = BinanceWebSocketApiManager(exchange="binance.com-futures")
stream_id = manager.create_stream(["arr"], ["btcusdt@ticker"])
print(f"Stream ID: {stream_id}")

版本兼容性

支持的版本

  • unicorn-binance-websocket-api >= 2.0.0
  • 推荐版本: 2.4.0

已知问题

  • 2.4.0版本不支持 throw_exception_if_unrepairable 参数(已修复)
  • 某些旧版本可能不支持 high_performance 参数(已添加回退)

性能优化建议

  1. 订阅数量: 根据实际需求调整,不要订阅过多
  2. 缓存TTL: 默认60秒可以根据需要调整
  3. 日志级别: 生产环境使用 INFO,调试时使用 DEBUG

联系支持

如果问题仍然存在:

  1. 查看完整的错误日志
  2. 检查 unicorn-binance-websocket-api 版本
  3. 查看 Unicorn Binance WebSocket API 文档