# AKShare HTTP API 部署指南 ## 简介 AKShare HTTP API 是基于 [AKShare](https://www.akshare.xyz/) 开源财经数据库构建的 HTTP 服务,为股动量系统提供实时股票行情、历史 K 线、板块数据等数据支持。 ## 目录 - [环境要求](#环境要求) - [部署方式](#部署方式) - [方式一:Python 直接运行(推荐开发环境)](#方式一python-直接运行推荐开发环境) - [方式二:Docker 部署(推荐生产环境)](#方式二docker-部署推荐生产环境) - [配置说明](#配置说明) - [验证安装](#验证安装) - [常见问题](#常见问题) ## 环境要求 ### 基础环境 - **Python**: 3.9 或更高版本 - **操作系统**: Windows / macOS / Linux - **内存**: 建议 2GB 以上 - **网络**: 可访问东方财富、新浪财经等数据源 ### Python 依赖 ```text akshare >= 1.15.0 fastapi >= 0.100.0 uvicorn >= 0.23.0 pandas >= 2.0.0 numpy >= 1.24.0 ``` ## 部署方式 ### 方式一:Python 直接运行(推荐开发环境) #### 1. 安装依赖 ```bash # 创建虚拟环境(推荐) python -m venv venv # Windows 激活虚拟环境 venv\Scripts\activate # macOS/Linux 激活虚拟环境 source venv/bin/activate # 安装依赖 pip install akshare fastapi uvicorn pandas numpy ``` #### 2. 准备代码 项目已包含 AKShare 服务代码,位于 `app/akshare/` 目录: ``` app/akshare/ ├── main.py # HTTP API 服务主文件 ├── start.py # 启动脚本 └── Dockerfile # Docker 构建文件 ``` #### 3. 启动服务 **方法 A:使用启动脚本(Windows 推荐)** ```powershell cd app/akshare python start.py ``` **方法 B:使用 Python 模块** ```bash cd app/akshare python -m uvicorn main:app --host 0.0.0.0 --port 8000 ``` **方法 C:使用 AKShare 内置命令(如果已安装)** ```bash akshare --host 0.0.0.0 --port 8000 ``` 启动成功后,控制台会显示: ``` INFO: Started server process [xxxxx] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to stop) ``` #### 4. 后台运行(Windows) 创建批处理文件 `start-akshare.bat`: ```batch @echo off cd /d D:\workspace\MomentumLab\app\akshare start /min python start.py ``` 双击运行即可后台启动。 ### 方式二:Docker 部署(推荐生产环境) #### 1. 构建镜像 ```bash cd app/akshare docker build -t akshare-http:latest . ``` #### 2. 运行容器 ```bash docker run -d \ --name akshare-http \ -p 8000:8000 \ --restart always \ akshare-http:latest ``` #### 3. 查看日志 ```bash docker logs -f akshare-http ``` #### 4. 使用 Docker Compose 在 `docker-compose.yml` 中添加: ```yaml version: '3.8' services: akshare: build: context: ./app/akshare dockerfile: Dockerfile container_name: akshare-http ports: - "8000:8000" restart: always networks: - app-network networks: app-network: driver: bridge ``` 启动: ```bash docker-compose up -d akshare ``` ## 配置说明 ### 后端配置 在后端 `.env` 文件中配置 AKShare 地址: ```bash # app/backend/.env # 本地开发(AKShare 在宿主机运行) AKSHARE_URL=http://host.docker.internal:8000 # 或者使用本地地址 AKSHARE_URL=http://localhost:8000 # 远程服务器 AKSHARE_URL=http://192.168.1.100:8000 ``` ### 前端配置 在管理后台的「数据源配置」页面可以动态修改 AKShare 地址: 1. 登录管理后台 2. 进入「数据源配置」 3. 点击 AKShare 服务地址旁的编辑图标 4. 输入新地址并保存 > **注意**:前端修改的地址会立即生效,无需重启后端服务。 ### 端口修改 如果 8000 端口被占用,可以修改启动端口: ```bash # 使用 8001 端口 python -m uvicorn main:app --host 0.0.0.0 --port 8001 ``` 同时更新后端配置: ```bash AKSHARE_URL=http://localhost:8001 ``` ## 验证安装 ### 1. 健康检查 浏览器访问: ``` http://localhost:8000/ ``` 返回: ```json { "status": "healthy", "service": "AKShare HTTP API", "version": "1.0.0" } ``` ### 2. 测试数据接口 浏览器访问: ``` http://localhost:8000/stock_zh_a_spot ``` 应该返回 A 股实时行情数据(JSON 格式)。 ### 3. 后端连接测试 在管理后台点击「测试连接」按钮,验证后端是否能正常连接到 AKShare。 ## 常用 API 接口 | 接口 | 说明 | 示例 | |------|------|------| | `GET /` | 健康检查 | `curl http://localhost:8000/` | | `GET /stock_zh_a_spot` | A 股实时行情 | `curl http://localhost:8000/stock_zh_a_spot` | | `GET /stock_zh_a_hist` | 历史 K 线数据 | `curl "http://localhost:8000/stock_zh_a_hist?symbol=000001&period=daily"` | | `GET /stock_zh_index_spot` | 指数实时行情 | `curl http://localhost:8000/stock_zh_index_spot` | ## 常见问题 ### Q1: 启动时报错 `ModuleNotFoundError: No module named 'akshare'` **原因**: 未安装 AKShare 或虚拟环境未激活 **解决**: ```bash # 安装 AKShare pip install akshare # 或安装所有依赖 pip install -r requirements.txt ``` ### Q2: 后端提示 "AKShare 连接失败" **原因**: 1. AKShare 服务未启动 2. 地址配置不正确 3. 防火墙/网络问题 **解决**: 1. 确认 AKShare 服务已启动: ```bash curl http://localhost:8000/ ``` 2. 检查后端配置是否正确: - Docker 环境使用 `http://host.docker.internal:8000` - 本地环境使用 `http://localhost:8000` 3. 检查防火墙是否允许 8000 端口 ### Q3: 数据返回为空或格式错误 **原因**: AKShare 数据源更新,接口格式变化 **解决**: ```bash # 更新 AKShare 到最新版本 pip install --upgrade akshare ``` ### Q4: Windows 下中文显示乱码 **解决**: ```powershell # 设置 UTF-8 编码 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 # 或在 CMD 中 chcp 65001 ``` ### Q5: 如何开机自启动 **Windows**: 1. 创建批处理文件 `start-akshare.bat` 2. 按 `Win + R`,输入 `shell:startup` 3. 将批处理文件放入启动文件夹 **Linux (systemd)**: 创建 `/etc/systemd/system/akshare.service`: ```ini [Unit] Description=AKShare HTTP API After=network.target [Service] Type=simple User=your-user WorkingDirectory=/path/to/app/akshare ExecStart=/path/to/python -m uvicorn main:app --host 0.0.0.0 --port 8000 Restart=always [Install] WantedBy=multi-user.target ``` 启用: ```bash sudo systemctl enable akshare sudo systemctl start akshare ``` ## 更新日志 ### v1.0.0 - 基础 HTTP API 服务 - 支持 A 股实时行情 - 支持历史 K 线数据 - 支持板块数据 - 支持指数数据 ## 相关链接 - [AKShare 官方文档](https://www.akshare.xyz/) - [FastAPI 文档](https://fastapi.tiangolo.com/) - [项目 GitHub](https://github.com/your-repo) --- 如有问题,请提交 Issue 或联系管理员。