1
This commit is contained in:
parent
b0392f358e
commit
c7f1361d99
103
backend/TROUBLESHOOTING.md
Normal file
103
backend/TROUBLESHOOTING.md
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
# Backend 启动问题排查指南
|
||||
|
||||
## 常见问题
|
||||
|
||||
### 1. 语法错误
|
||||
**错误信息**: `SyntaxError: expected 'except' or 'finally' block`
|
||||
|
||||
**解决方法**:
|
||||
- 检查代码中的 `try:` 块是否都有对应的 `except` 或 `finally`
|
||||
- 检查缩进是否正确
|
||||
- 运行 `python3 -m py_compile api/routes/trades.py` 检查语法
|
||||
|
||||
### 2. 缺少依赖模块
|
||||
**错误信息**: `ModuleNotFoundError: No module named 'xxx'`
|
||||
|
||||
**解决方法**:
|
||||
```bash
|
||||
# 激活虚拟环境
|
||||
source ../.venv/bin/activate # 或 source .venv/bin/activate
|
||||
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
|
||||
# 或者单独安装缺失的模块
|
||||
pip install python-jose[cryptography]
|
||||
```
|
||||
|
||||
### 3. 导入错误
|
||||
**错误信息**: `ModuleNotFoundError: No module named 'api'`
|
||||
|
||||
**解决方法**:
|
||||
- 确保在 `backend` 目录下运行
|
||||
- 检查 `PYTHONPATH` 是否正确设置
|
||||
- 使用 `cd backend && python3 -m uvicorn api.main:app` 启动
|
||||
|
||||
## 排查步骤
|
||||
|
||||
### 步骤 1: 检查依赖
|
||||
```bash
|
||||
cd backend
|
||||
bash check_dependencies.sh
|
||||
```
|
||||
|
||||
### 步骤 2: 检查语法
|
||||
```bash
|
||||
cd backend
|
||||
source ../.venv/bin/activate
|
||||
python3 -m py_compile api/main.py
|
||||
python3 -m py_compile api/routes/*.py
|
||||
```
|
||||
|
||||
### 步骤 3: 测试导入
|
||||
```bash
|
||||
cd backend
|
||||
source ../.venv/bin/activate
|
||||
python3 -c "import api.main; print('✓ 导入成功')"
|
||||
```
|
||||
|
||||
### 步骤 4: 查看日志
|
||||
```bash
|
||||
# 查看最新的错误日志
|
||||
tail -50 backend/logs/api.log
|
||||
tail -50 backend/logs/uvicorn.log
|
||||
```
|
||||
|
||||
### 步骤 5: 手动启动测试
|
||||
```bash
|
||||
cd backend
|
||||
source ../.venv/bin/activate
|
||||
export DB_HOST=your_db_host
|
||||
export DB_PORT=3306
|
||||
export DB_USER=your_db_user
|
||||
export DB_PASSWORD=your_db_password
|
||||
export DB_NAME=auto_trade_sys
|
||||
uvicorn api.main:app --host 0.0.0.0 --port 8001 --log-level info
|
||||
```
|
||||
|
||||
## 启动脚本
|
||||
|
||||
### 开发模式(自动重载)
|
||||
```bash
|
||||
cd backend
|
||||
./start_dev.sh
|
||||
```
|
||||
|
||||
### 生产模式(后台运行)
|
||||
```bash
|
||||
cd backend
|
||||
./start.sh
|
||||
```
|
||||
|
||||
## 检查服务状态
|
||||
|
||||
```bash
|
||||
# 检查进程
|
||||
ps aux | grep uvicorn
|
||||
|
||||
# 检查端口
|
||||
lsof -i :8001
|
||||
|
||||
# 测试健康检查
|
||||
curl http://localhost:8001/api/health
|
||||
```
|
||||
|
|
@ -749,6 +749,9 @@ async def sync_trades_from_binance(
|
|||
else:
|
||||
skipped_no_match += 1
|
||||
logger.debug(f"平仓订单 {order_id} ({symbol}) 无法匹配到现有记录(无 open 状态且无 exit_order_id 为空的 closed 记录),跳过")
|
||||
except Exception as e:
|
||||
logger.warning(f"同步平仓订单失败 {symbol} (订单ID: {order_id}): {e}")
|
||||
continue
|
||||
# 2. 处理开仓订单
|
||||
logger.info(f"开始处理 {len(open_orders)} 个开仓订单...")
|
||||
for order in open_orders:
|
||||
|
|
|
|||
46
backend/check_dependencies.sh
Executable file
46
backend/check_dependencies.sh
Executable file
|
|
@ -0,0 +1,46 @@
|
|||
#!/bin/bash
|
||||
# 检查 backend 依赖是否完整安装
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
echo "=== 检查 Backend 依赖 ==="
|
||||
echo ""
|
||||
|
||||
# 检查虚拟环境
|
||||
if [ -d "../.venv" ]; then
|
||||
echo "✓ 找到虚拟环境: ../.venv"
|
||||
source ../.venv/bin/activate
|
||||
elif [ -d ".venv" ]; then
|
||||
echo "✓ 找到虚拟环境: .venv"
|
||||
source .venv/bin/activate
|
||||
else
|
||||
echo "⚠ 未找到虚拟环境,使用系统 Python"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Python 路径: $(which python3)"
|
||||
echo "Python 版本: $(python3 --version)"
|
||||
echo ""
|
||||
|
||||
# 检查关键依赖
|
||||
echo "检查关键依赖..."
|
||||
python3 -c "import fastapi; print('✓ fastapi:', fastapi.__version__)" 2>&1 || echo "✗ fastapi 未安装"
|
||||
python3 -c "import uvicorn; print('✓ uvicorn:', uvicorn.__version__)" 2>&1 || echo "✗ uvicorn 未安装"
|
||||
python3 -c "from jose import jwt; print('✓ python-jose: 已安装')" 2>&1 || echo "✗ python-jose 未安装"
|
||||
python3 -c "import pymysql; print('✓ pymysql:', pymysql.__version__)" 2>&1 || echo "✗ pymysql 未安装"
|
||||
python3 -c "import redis; print('✓ redis:', redis.__version__)" 2>&1 || echo "✗ redis 未安装"
|
||||
python3 -c "from cryptography.fernet import Fernet; print('✓ cryptography: 已安装')" 2>&1 || echo "✗ cryptography 未安装"
|
||||
|
||||
echo ""
|
||||
echo "=== 尝试导入 api.main ==="
|
||||
python3 -c "import api.main; print('✓ api.main 导入成功')" 2>&1 || echo "✗ api.main 导入失败"
|
||||
|
||||
echo ""
|
||||
echo "=== 检查完成 ==="
|
||||
echo ""
|
||||
echo "如果缺少依赖,请运行:"
|
||||
echo " pip install -r backend/requirements.txt"
|
||||
echo ""
|
||||
echo "或者激活虚拟环境后运行:"
|
||||
echo " source .venv/bin/activate"
|
||||
echo " pip install -r backend/requirements.txt"
|
||||
Loading…
Reference in New Issue
Block a user