# 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` 依赖 **解决方案**: ```bash cd trading_system pip install -r requirements.txt # 或单独安装 pip install unicorn-binance-websocket-api==2.4.0 ``` ### 错误3: WebSocket连接失败 **可能原因**: 1. 网络连接问题 2. 防火墙阻止 3. Binance服务器问题 **检查步骤**: ```bash # 检查网络连接 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` 或环境变量中设置: ```python LOG_LEVEL = 'DEBUG' ``` ### 检查WebSocket状态 在代码中添加: ```python if client.unicorn_manager: stats = client.unicorn_manager.get_stream_statistics() print(f"WebSocket统计: {stats}") ``` ### 手动测试WebSocket连接 ```python 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 文档](https://github.com/LUCIT-Systems-and-Development/unicorn-binance-websocket-api)