fix(start_recommendations): 优化虚拟环境激活逻辑

更新 `start_recommendations.sh` 脚本,优先使用 `trading_system/.venv` 激活虚拟环境,确保与服务器部署一致。增强错误提示信息,提升用户体验与环境配置的准确性。
This commit is contained in:
薇薇安 2026-02-23 19:24:33 +08:00
parent 4479c4f02d
commit 4ccf067b24
2 changed files with 11 additions and 7 deletions

View File

@ -1357,7 +1357,7 @@ async def backend_stop(_admin: Dict[str, Any] = Depends(require_system_admin)) -
def _recommendations_process_running() -> Tuple[bool, Optional[int]]: def _recommendations_process_running() -> Tuple[bool, Optional[int]]:
"""检查推荐服务进程是否运行,返回 (running, pid)。兼容 pgrep/ps 及 supervisor 等启动方式。""" """检查推荐服务进程是否运行,返回 (running, pid)。兼容 pgrep/ps 及 supervisor 等启动方式。"""
# 1. 优先 pgrepLinux/macOS 常见) # 1. 优先 pgrepLinux/macOS 常见)
for pattern in ["trading_system.recommendations_main", "recommendations_main"]: for pattern in ["trading_system.recommendations_main", "recommendations_main1", "recommendations_main"]:
try: try:
result = subprocess.run( result = subprocess.run(
["pgrep", "-f", pattern], ["pgrep", "-f", pattern],
@ -1375,7 +1375,7 @@ def _recommendations_process_running() -> Tuple[bool, Optional[int]]:
# 2. 回退ps + greppgrep 不可用或匹配失败时) # 2. 回退ps + greppgrep 不可用或匹配失败时)
try: try:
result = subprocess.run( 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, capture_output=True,
text=True, text=True,
timeout=5, timeout=5,

View File

@ -1,21 +1,25 @@
#!/bin/bash #!/bin/bash
# 启动推荐服务recommendations_main # 启动推荐服务recommendations_main
# 参考 backend/start.sh使用相同 venv 与项目根目录 # 优先使用 trading_system/.venv与服务器实际部署一致其次 backend/.venv
cd "$(dirname "$0")" cd "$(dirname "$0")"
BACKEND_DIR="$(pwd)"
PROJECT_ROOT="$(cd .. && pwd)" PROJECT_ROOT="$(cd .. && pwd)"
TRADING_VENV="${PROJECT_ROOT}/trading_system/.venv"
# 激活虚拟环境(与 backend/start.sh 一致) # 激活虚拟环境:优先 trading_system/.venv其次 backend 下
if [ -d ".venv" ]; then if [ -d "${TRADING_VENV}" ]; then
source "${TRADING_VENV}/bin/activate"
elif [ -d ".venv" ]; then
source .venv/bin/activate source .venv/bin/activate
elif [ -d "../.venv" ]; then elif [ -d "../.venv" ]; then
source ../.venv/bin/activate source ../.venv/bin/activate
else else
echo "错误: 找不到虚拟环境(.venv 或 ../.venv" echo "错误: 找不到虚拟环境(trading_system/.venv、.venv 或 ../.venv"
exit 1 exit 1
fi fi
# 设置环境变量(与 backend/start.sh 类似) # 设置环境变量
export PYTHONPATH="${PROJECT_ROOT}" export PYTHONPATH="${PROJECT_ROOT}"
export DB_HOST=${DB_HOST:-localhost} export DB_HOST=${DB_HOST:-localhost}
export DB_PORT=${DB_PORT:-3306} export DB_PORT=${DB_PORT:-3306}