From 4ccf067b24e25a1dd08f5c19f62c49a600300c01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=87=E8=96=87=E5=AE=89?= Date: Mon, 23 Feb 2026 19:24:33 +0800 Subject: [PATCH] =?UTF-8?q?fix(start=5Frecommendations):=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E8=99=9A=E6=8B=9F=E7=8E=AF=E5=A2=83=E6=BF=80=E6=B4=BB?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新 `start_recommendations.sh` 脚本,优先使用 `trading_system/.venv` 激活虚拟环境,确保与服务器部署一致。增强错误提示信息,提升用户体验与环境配置的准确性。 --- backend/api/routes/system.py | 4 ++-- backend/start_recommendations.sh | 14 +++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/backend/api/routes/system.py b/backend/api/routes/system.py index 6baa722..b470acc 100644 --- a/backend/api/routes/system.py +++ b/backend/api/routes/system.py @@ -1357,7 +1357,7 @@ async def backend_stop(_admin: Dict[str, Any] = Depends(require_system_admin)) - def _recommendations_process_running() -> Tuple[bool, Optional[int]]: """检查推荐服务进程是否运行,返回 (running, pid)。兼容 pgrep/ps 及 supervisor 等启动方式。""" # 1. 优先 pgrep(Linux/macOS 常见) - for pattern in ["trading_system.recommendations_main", "recommendations_main"]: + for pattern in ["trading_system.recommendations_main", "recommendations_main1", "recommendations_main"]: try: result = subprocess.run( ["pgrep", "-f", pattern], @@ -1375,7 +1375,7 @@ def _recommendations_process_running() -> Tuple[bool, Optional[int]]: # 2. 回退:ps + grep(pgrep 不可用或匹配失败时) try: result = subprocess.run( - ["sh", "-c", "ps aux 2>/dev/null | grep -E 'recommendations_main|trading_system.recommendations' | grep -v grep | head -1"], + ["sh", "-c", "ps aux 2>/dev/null | grep -E 'recommendations_main1|recommendations_main|trading_system.recommendations' | grep -v grep | head -1"], capture_output=True, text=True, timeout=5, diff --git a/backend/start_recommendations.sh b/backend/start_recommendations.sh index ff14127..c9586fe 100755 --- a/backend/start_recommendations.sh +++ b/backend/start_recommendations.sh @@ -1,21 +1,25 @@ #!/bin/bash # 启动推荐服务(recommendations_main) -# 参考 backend/start.sh,使用相同 venv 与项目根目录 +# 优先使用 trading_system/.venv(与服务器实际部署一致),其次 backend/.venv cd "$(dirname "$0")" +BACKEND_DIR="$(pwd)" PROJECT_ROOT="$(cd .. && pwd)" +TRADING_VENV="${PROJECT_ROOT}/trading_system/.venv" -# 激活虚拟环境(与 backend/start.sh 一致) -if [ -d ".venv" ]; then +# 激活虚拟环境:优先 trading_system/.venv,其次 backend 下 +if [ -d "${TRADING_VENV}" ]; then + source "${TRADING_VENV}/bin/activate" +elif [ -d ".venv" ]; then source .venv/bin/activate elif [ -d "../.venv" ]; then source ../.venv/bin/activate else - echo "错误: 找不到虚拟环境(.venv 或 ../.venv)" + echo "错误: 找不到虚拟环境(trading_system/.venv、.venv 或 ../.venv)" exit 1 fi -# 设置环境变量(与 backend/start.sh 类似) +# 设置环境变量 export PYTHONPATH="${PROJECT_ROOT}" export DB_HOST=${DB_HOST:-localhost} export DB_PORT=${DB_PORT:-3306}