# can-slim-backend-lib **Repository Path**: cyrcc/can-slim-backend-lib ## Basic Information - **Project Name**: can-slim-backend-lib - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-08 - **Last Updated**: 2026-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CAN SLIM 后端 API 服务器 > 为 CAN SLIM 策略炒股小程序提供后端 API 服务,支持 EPS 基本面分析、RPS 强度分析等核心功能。 ## 📋 目录 - [项目简介](#项目简介) - [技术栈](#技术栈) - [快速开始](#快速开始) - [环境配置](#环境配置) - [API 接口](#api-接口) - [数据库配置](#数据库配置) - [部署说明](#部署说明) --- ## 📖 项目简介 本项目是 CAN SLIM 策略炒股小程序的后端服务,提供股票基本面分析、相对强度分析等核心功能接口。 ### 主要功能 - **EPS 基本面分析**:提供单季度/累计 EPS 数据、增长率、排名、评分等 - **RPS 强度分析**:提供相对强度数据、行业排名、历史趋势等 - **股票搜索**:支持股票代码、名称、拼音搜索 - **数据缓存**:为小程序提供全量股票数据缓存接口 --- ## 🛠 技术栈 - **Web 框架**:Flask 3.1.1 - **数据库**:MySQL 8.0+ - **数据处理**:Pandas + NumPy - **其他**:Flask-CORS(跨域支持)、PyPinyin(拼音搜索) --- ## 🚀 快速开始 ### 1. 克隆项目 ```bash git clone cd can-slim-backend-lib ``` ### 2. 创建虚拟环境 **Windows:** ```bash python -m venv venv ``` **Linux/Mac:** ```bash python3 -m venv venv ``` ### 3. 激活虚拟环境 **Windows:** ```bash # 使用 cmd venv\Scripts\activate.bat # 使用 PowerShell venv\Scripts\Activate.ps1 ``` **Linux/Mac:** ```bash source venv/bin/activate ``` ### 4. 安装依赖 **开发环境(完整依赖):** ```bash pip install -r requirements.txt ``` **生产环境(精简依赖):** ```bash pip install -r requirements-prod.txt ``` > 💡 **提示**:生产环境建议使用 `requirements-prod.txt`,只包含 28 个核心库,安装速度更快。 ### 5. 配置数据库 编辑 `api/database/database_config_multi.ini` 文件,配置数据库连接信息: ```ini [active] environment = docker # 或 aliyun、tencent 等 [docker] description = Docker本地数据库 host = localhost port = 3306 user = root password = your_password database = stock_data charset = utf8mb4 ``` ### 6. 启动服务器 **方式一:使用批处理文件(推荐 - Windows)** ```bash start_api_server.bat ``` **方式二:直接运行 Python 脚本** ```bash # 确保虚拟环境已激活 python api_server.py ``` **方式三:使用虚拟环境的 Python(无需激活)** **Windows:** ```bash venv\Scripts\python.exe api_server.py ``` **Linux/Mac:** ```bash venv/bin/python api_server.py ``` ### 7. 验证服务 访问健康检查接口: ```bash curl http://localhost:5000/api/health ``` 预期返回: ```json { "success": true, "data": { "status": "healthy", "service": "CAN SLIM API Server", "database": "connected" }, "timestamp": "2025-10-05T12:00:00", "api_version": "v1.0" } ``` --- ## ⚙️ 环境配置 ### 虚拟环境管理 **查看虚拟环境 Python 版本:** ```bash # Windows venv\Scripts\python.exe --version # Linux/Mac venv/bin/python --version ``` **退出虚拟环境:** ```bash deactivate ``` **删除虚拟环境:** ```bash # Windows rmdir /s venv # Linux/Mac rm -rf venv ``` **重建虚拟环境:** ```bash # 1. 删除旧环境 # 2. 创建新环境 python -m venv venv # 3. 激活环境 venv\Scripts\activate # Windows source venv/bin/activate # Linux/Mac # 4. 重新安装依赖 pip install -r requirements-prod.txt ``` ### 数据库环境切换 使用数据库配置管理工具: ```bash # 查看当前配置状态 python api/database/database_config_manager.py status # 列出所有可用环境 python api/database/database_config_manager.py list # 切换到其他环境 python api/database/database_config_manager.py switch aliyun # 测试数据库连接 python api/database/database_config_manager.py test ``` --- ## 📡 API 接口 ### 通用接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/health` | GET | 健康检查 | | `/api/all_stocks` | GET | 获取所有股票列表(供前端缓存) | | `/api/search_stocks` | POST | 股票搜索 | ### EPS 基本面分析接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/eps_analysis` | POST | 个股 EPS 分析 | | `/api/growth_analysis` | POST | 成长性分析(EPS 值) | | `/api/roe_analysis` | POST | ROE 分析 | ### RPS 强度分析接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/rps_analysis` | POST | 个股 RPS 分析 | | `/api/rps_rankings` | GET | RPS 排名(TOP N) | ### 接口示例 **股票搜索:** ```bash curl -X POST http://localhost:5000/api/search_stocks \ -H "Content-Type: application/json" \ -d '{"keyword": "平安", "limit": 10}' ``` **EPS 分析:** ```bash curl -X POST http://localhost:5000/api/eps_analysis \ -H "Content-Type: application/json" \ -d '{"stock_code": "000001", "report_date": "2024-09-30"}' ``` **RPS 分析:** ```bash curl -X POST http://localhost:5000/api/rps_analysis \ -H "Content-Type: application/json" \ -d '{"stock_code": "000001", "market": "SZ"}' ``` --- ## 🗄️ 数据库配置 ### 数据库要求 - **MySQL 版本**:8.0+ - **字符集**:utf8mb4 - **必需表**: - `stock_basic_info` - 股票基本信息 - `eps_scores` - EPS 评分数据 - `rps_rankings` - RPS 排名数据 - 其他相关数据表 ### 配置文件说明 配置文件位置:`api/database/database_config_multi.ini` 支持多环境配置: - `docker` - Docker 本地环境 - `aliyun` - 阿里云数据库 - `tencent` - 腾讯云数据库 - `aws` - AWS RDS 通过修改 `[active]` 段的 `environment` 参数切换环境。 --- ## 🚢 部署说明 ### 开发环境部署 ```bash # 1. 创建虚拟环境 python -m venv venv # 2. 激活虚拟环境 venv\Scripts\activate # Windows source venv/bin/activate # Linux/Mac # 3. 安装完整依赖(包括开发工具) pip install -r requirements.txt # 4. 配置数据库 # 编辑 api/database/database_config_multi.ini # 5. 启动服务器(调试模式) python api_server.py ``` ### 生产环境部署 #### 方式一:使用批处理脚本(推荐 - Windows) ```bash # 1. 创建虚拟环境 python -m venv venv # 2. 安装生产环境依赖 venv\Scripts\activate pip install -r requirements-prod.txt # 3. 配置生产数据库 # 编辑 api/database/database_config_multi.ini # 设置 environment = aliyun 或其他生产环境 # 4. (可选)配置环境变量 # 复制 .env.example 为 .env 并修改配置 copy .env.example .env # 5. 启动生产服务器(使用 Waitress) start_api_server_prod.bat ``` #### 方式二:手动启动(跨平台) ```bash # 1. 创建虚拟环境 python -m venv venv # 2. 激活虚拟环境 venv\Scripts\activate # Windows source venv/bin/activate # Linux/Mac # 3. 安装生产环境依赖(包含 Waitress) pip install -r requirements-prod.txt # 4. 配置数据库和环境变量 # 编辑 api/database/database_config_multi.ini # 复制 .env.example 为 .env 并修改配置 # 5. 启动生产服务器(默认使用 Waitress) python api_server.py # 或明确指定生产模式 python api_server.py ``` #### 方式三:使用其他 WSGI 服务器 **使用 Gunicorn(推荐 - Linux/Mac)** ```bash # 安装 Gunicorn pip install gunicorn # 启动服务器(4个worker进程) gunicorn -w 4 -b 0.0.0.0:5000 --timeout 120 api_server:app # 或使用配置文件 gunicorn -c gunicorn_config.py api_server:app ``` **使用 uWSGI(Linux/Mac)** ```bash # 安装 uWSGI pip install uwsgi # 启动服务器 uwsgi --http 0.0.0.0:5000 --wsgi-file api_server.py --callable app --processes 4 --threads 2 ``` ### 生产环境配置优化 #### 1. 环境变量配置 复制 `.env.example` 为 `.env` 并根据实际情况修改: ```bash # 应用配置 APP_ENV=production DEBUG=False # 服务器配置 HOST=0.0.0.0 PORT=5000 # WSGI 配置(Waitress) WAITRESS_THREADS=8 # 建议设置为 CPU 核心数的 2 倍 # 数据库配置 DB_ENVIRONMENT=aliyun # 或 tencent、aws 等 DB_POOL_SIZE=5 # 安全配置 CORS_ORIGINS=https://your-domain.com ``` #### 2. 性能调优建议 - **线程数**:设置为 CPU 核心数的 2 倍(考虑I/O密集型) - 您的 R9 9950X3D 有 16 核心,建议设置 `WAITRESS_THREADS=32` - **数据库连接池**:根据并发请求数调整 `DB_POOL_SIZE` - **日志级别**:生产环境建议设置为 `INFO` 或 `WARNING` #### 3. 系统服务配置(Linux) 创建 systemd 服务文件 `/etc/systemd/system/canslim-api.service`: ```ini [Unit] Description=CAN SLIM API Server After=network.target mysql.service [Service] Type=simple User=www-data WorkingDirectory=/path/to/can-slim-backend-lib Environment="PATH=/path/to/can-slim-backend-lib/venv/bin" ExecStart=/path/to/can-slim-backend-lib/venv/bin/python api_server.py Restart=always RestartSec=10 [Install] WantedBy=multi-user.target ``` 启动服务: ```bash sudo systemctl daemon-reload sudo systemctl start canslim-api sudo systemctl enable canslim-api sudo systemctl status canslim-api ``` #### 4. Nginx 反向代理配置 ```nginx server { listen 80; server_name api.your-domain.com; location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 超时设置 proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; } } ``` ### Docker 部署(待完善) 创建 `Dockerfile`: ```dockerfile FROM python:3.11-slim WORKDIR /app # 安装系统依赖 RUN apt-get update && apt-get install -y \ gcc \ default-libmysqlclient-dev \ && rm -rf /var/lib/apt/lists/* # 复制依赖文件 COPY requirements-prod.txt . # 安装 Python 依赖 RUN pip install --no-cache-dir -r requirements-prod.txt # 复制应用代码 COPY . . # 暴露端口 EXPOSE 5000 # 启动命令 CMD ["python", "api_server.py"] ``` --- ## 📁 项目结构 ``` can-slim-backend-lib/ ├── api/ # API 模块 │ ├── database/ # 数据库配置 │ │ ├── database_config_manager.py │ │ └── database_config_multi.ini │ ├── eps_analysis/ # EPS 分析模块 │ │ └── eps_stock_query.py │ ├── rps_analysis/ # RPS 分析模块 │ │ └── rps_stock_query.py │ └── stock_search.py # 股票搜索 ├── api_server.py # API 服务器主程序 ├── config.py # 配置管理模块 ├── .env.example # 环境变量配置示例 ├── requirements.txt # 完整依赖(开发环境) ├── requirements-prod.txt # 精简依赖(生产环境) ├── start_api_server.bat # Windows 启动脚本(开发模式) ├── start_api_server_prod.bat # Windows 启动脚本(生产模式) └── README.md # 本文件 ``` --- ## 🔧 常见问题 ### 1. 虚拟环境创建失败 **问题**:`No module named 'venv'` **解决**: ```bash # Ubuntu/Debian sudo apt-get install python3-venv # CentOS/RHEL sudo yum install python3-venv ``` ### 2. 依赖安装失败 **问题**:某些库安装失败(如 mysqlclient) **解决**: ```bash # Windows: 安装 Microsoft C++ Build Tools # 或使用 mysql-connector-python 替代 # Linux: sudo apt-get install python3-dev default-libmysqlclient-dev build-essential ``` ### 3. 数据库连接失败 **问题**:`Can't connect to MySQL server` **解决**: - 检查数据库是否启动 - 检查配置文件中的连接信息 - 检查防火墙/安全组设置 - 使用配置管理工具测试连接: ```bash python api/database/database_config_manager.py test ``` ### 4. 端口被占用 **问题**:`Address already in use: 5000` **解决**: ```bash # 查找占用进程 # Windows netstat -ano | findstr :5000 # Linux/Mac lsof -i :5000 # 杀死进程或修改 api_server.py 中的端口号 ``` ### 5. 跨域问题 **问题**:小程序访问 API 提示跨域错误 **解决**: - 检查 `flask-cors` 是否安装 - 确认 `api_server.py` 中已启用 `CORS(app)` - 检查小程序 `app.js` 中的 `apiUrl` 配置 --- ## 📝 日志文件 服务器运行日志保存在: - `api_server.log` - 主服务日志(包含所有请求和错误信息) 日志级别:INFO 查看实时日志: ```bash # Windows type api_server.log # Linux/Mac tail -f api_server.log ``` --- ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! --- ## 📄 开源协议 [待添加] --- ## 📧 联系方式 如有问题,请提交 Issue 或联系项目维护者。 --- **最后更新**:2025-10-05