diff --git a/XianyuAutoAsync.py b/XianyuAutoAsync.py index 7811613..834cfb8 100644 --- a/XianyuAutoAsync.py +++ b/XianyuAutoAsync.py @@ -1723,30 +1723,43 @@ class XianyuLive: async def _create_websocket_connection(self, headers): """创建WebSocket连接,兼容不同版本的websockets库""" + import websockets + + # 获取websockets版本用于调试 + websockets_version = getattr(websockets, '__version__', '未知') + logger.debug(f"websockets库版本: {websockets_version}") + try: # 尝试使用extra_headers参数 return websockets.connect( self.base_url, extra_headers=headers ) - except TypeError as e: - # 安全地检查异常信息 + except Exception as e: + # 捕获所有异常类型,不仅仅是TypeError error_msg = self._safe_str(e) + logger.debug(f"extra_headers参数失败: {error_msg}") - if "extra_headers" in error_msg: - logger.warning("websockets库不支持extra_headers参数,使用兼容模式") + if "extra_headers" in error_msg or "unexpected keyword argument" in error_msg: + logger.warning("websockets库不支持extra_headers参数,尝试additional_headers") # 使用additional_headers参数(较新版本) try: return websockets.connect( self.base_url, additional_headers=headers ) - except TypeError: - # 如果都不支持,则不传递headers - logger.warning("websockets库不支持headers参数,使用基础连接模式") - return websockets.connect(self.base_url) + except Exception as e2: + error_msg2 = self._safe_str(e2) + logger.debug(f"additional_headers参数失败: {error_msg2}") + + if "additional_headers" in error_msg2 or "unexpected keyword argument" in error_msg2: + # 如果都不支持,则不传递headers + logger.warning("websockets库不支持headers参数,使用基础连接模式") + return websockets.connect(self.base_url) + else: + raise e2 else: - raise + raise e async def _handle_websocket_connection(self, websocket, toid, item_id, text): """处理WebSocket连接的具体逻辑""" diff --git a/docker-rebuild.sh b/docker-rebuild.sh new file mode 100644 index 0000000..e3c3042 --- /dev/null +++ b/docker-rebuild.sh @@ -0,0 +1,93 @@ +#!/bin/bash + +# ================================ +# 闲鱼自动回复系统 - Docker重新构建脚本 +# ================================ + +set -e + +echo "🐳 闲鱼自动回复系统 - Docker重新构建" +echo "==================================" + +# 检查Docker是否运行 +if ! docker info > /dev/null 2>&1; then + echo "❌ Docker未运行,请先启动Docker" + exit 1 +fi + +echo "📋 步骤1: 停止并删除现有容器" +echo "--------------------------------" + +# 停止现有容器 +if docker ps -q --filter "name=xianyu-auto-reply" | grep -q .; then + echo "🛑 停止现有容器..." + docker stop xianyu-auto-reply +fi + +# 删除现有容器 +if docker ps -aq --filter "name=xianyu-auto-reply" | grep -q .; then + echo "🗑️ 删除现有容器..." + docker rm xianyu-auto-reply +fi + +echo "📋 步骤2: 删除现有镜像" +echo "--------------------------------" + +# 删除现有镜像 +if docker images -q xianyu-auto-reply | grep -q .; then + echo "🗑️ 删除现有镜像..." + docker rmi xianyu-auto-reply +fi + +echo "📋 步骤3: 重新构建镜像" +echo "--------------------------------" + +echo "🔨 开始构建新镜像..." +docker build -t xianyu-auto-reply . + +echo "📋 步骤4: 启动新容器" +echo "--------------------------------" + +echo "🚀 启动新容器..." +docker run -d \ + --name xianyu-auto-reply \ + --restart unless-stopped \ + -p 8080:8080 \ + -v "$(pwd)/data:/app/data" \ + -v "$(pwd)/logs:/app/logs" \ + -v "$(pwd)/backups:/app/backups" \ + -e DOCKER_ENV=true \ + xianyu-auto-reply + +echo "📋 步骤5: 检查容器状态" +echo "--------------------------------" + +# 等待容器启动 +echo "⏳ 等待容器启动..." +sleep 5 + +# 检查容器状态 +if docker ps --filter "name=xianyu-auto-reply" --filter "status=running" | grep -q xianyu-auto-reply; then + echo "✅ 容器启动成功" + + echo "📋 容器信息:" + docker ps --filter "name=xianyu-auto-reply" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" + + echo "📋 最近日志:" + docker logs --tail 20 xianyu-auto-reply + + echo "" + echo "🎉 Docker重新构建完成!" + echo "==================================" + echo "📱 Web界面: http://localhost:8080" + echo "📊 健康检查: http://localhost:8080/health" + echo "📋 查看日志: docker logs -f xianyu-auto-reply" + echo "🛑 停止容器: docker stop xianyu-auto-reply" + echo "🗑️ 删除容器: docker rm xianyu-auto-reply" + +else + echo "❌ 容器启动失败" + echo "📋 错误日志:" + docker logs xianyu-auto-reply + exit 1 +fi diff --git a/requirements.txt b/requirements.txt index b03858c..0b6418a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,7 +11,7 @@ pydantic>=2.7.0 loguru>=0.7.0 # 网络通信 -websockets>=12.0 +websockets>=10.0,<13.0 aiohttp>=3.9.0 requests>=2.31.0