# 行情数据服务启动指南 **版本**: v2.0 **日期**: 2026-03-08 **适用系统**: Windows / Linux / macOS **支持实现**: Go / Python --- ## 📢 重要说明 本项目支持 **Go** 和 **Python** 双实现: | 实现方式 | 推荐场景 | 目录 | |----------|----------|------| | **Go** | 生产环境、高并发 | `market-data-service/` | | **Python** | 快速开发、原型验证 | `python_market_data_service/` | 本文档包含两种实现方式的启动说明,请按需选择。 --- ## 目录 1. [快速选择指南](#快速选择指南) 2. [环境要求](#一环境要求) 3. [Go 实现启动](#二go-实现启动) 4. [Python 实现启动](#三python-实现启动) 5. [访问管理后台](#四访问管理后台) 6. [常见问题](#五常见问题) 7. [API 测试](#六api-测试) --- ## 快速选择指南 ### 选择 Go 实现,如果你: - 需要部署到生产环境 - 有高并发性能要求 - 偏好编译型语言的稳定性 ### 选择 Python 实现,如果你: - 需要快速验证功能 - 需要频繁调试和修改 - 需要更好的数据源生态支持(Tushare原生) --- ## 一、环境要求 ### 1.1 必需组件 | 组件 | Go实现 | Python实现 | 说明 | |------|--------|------------|------| | Go | 1.21+ | - | Go编程语言运行时 | | Python | - | 3.10+ | Python解释器 | | PostgreSQL | 15+ | 15+ | 数据存储(可选) | ### 1.2 检查环境 ```bash # Go实现 - 检查 Go 版本 go version # 输出: go version go1.21.x windows/amd64 # Python实现 - 检查 Python 版本 python --version # 输出: Python 3.10.x # 检查 PostgreSQL(可选) psql --version # 输出: psql (PostgreSQL) 15.x ``` --- ## 二、Go 实现启动 ### 2.1 安装 Go **Windows:** 1. 下载安装包: https://go.dev/dl/go1.21.6.windows-amd64.msi 2. 双击安装,按向导完成 3. 打开新的命令提示符验证: `go version` **Linux:** ```bash # 下载并解压 wget https://go.dev/dl/go1.21.6.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.21.6.linux-amd64.tar.gz # 添加到 PATH echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc source ~/.bashrc go version ``` **macOS:** ```bash brew install go go version ``` ### 2.2 安装依赖 ```bash cd market-data-service # 设置国内镜像(推荐) go env -w GOPROXY=https://goproxy.cn,direct # 下载依赖 go mod download # 验证依赖 go mod verify ``` ### 2.3 配置文件 项目使用 JSON 格式的配置文件,默认路径为 `./config.json`。 **配置文件示例**: `config.json` ```json { "server": { "port": 8080, "mode": "debug", "api_key": "demo-api-key-2024" }, "database": { "host": "localhost", "port": 5432, "user": "postgres", "password": "postgres", "database": "marketdata" }, "sources": { "stock": { "active": "tushare", "list": { "tushare": { "type": "http", "config": { "token": "your-tushare-token-here", "base_url": "https://api.tushare.pro" } } } }, "futures": { "active": "tushare", "list": { "tushare": { "type": "http", "config": { "token": "your-tushare-token-here", "base_url": "https://api.tushare.pro" } } } } } } ``` ### 2.4 启动服务 **方式一:直接运行(开发模式)** ```bash cd market-data-service # 设置环境变量(可选) set PORT=8080 set CONFIG_PATH=./config.json # 启动服务 go run ./cmd/server ``` **预期输出:** ``` [GIN-debug] [WARNING] Running in "debug" mode. 2026/03/08 14:00:00 Server starting on port 8080 2026/03/08 14:00:00 Admin dashboard: http://localhost:8080/admin ``` **方式二:编译后运行(生产模式)** ```bash set GIN_MODE=release go build -o market-server.exe ./cmd/server # 运行 .\market-server.exe ``` **方式三:使用 Makefile** ```bash # 查看可用命令 make help # 启动服务 make run # 编译 make build ``` --- ## 三、Python 实现启动 ### 3.1 安装 Python **Windows:** 1. 下载安装包: https://www.python.org/downloads/windows/ 2. 选择 Python 3.10+,安装时勾选 "Add to PATH" 3. 验证: `python --version` **Linux:** ```bash # Ubuntu/Debian sudo apt update sudo apt install -y python3.10 python3.10-venv python3-pip # CentOS/RHEL sudo yum install -y python310 python310-pip python3 --version ``` **macOS:** ```bash brew install python@3.10 python3 --version ``` ### 3.2 创建虚拟环境 ```bash cd python_market_data_service # 创建虚拟环境 python -m venv venv # 激活虚拟环境 # Windows: venv\Scripts\activate # Linux/Mac: source venv/bin/activate ``` ### 3.3 安装依赖 ```bash # 升级pip pip install --upgrade pip # 安装依赖 pip install -r requirements.txt # 安装Tushare(需单独安装) pip install tushare ``` ### 3.4 配置文件 Python实现使用与Go相同的 `config.json` 配置文件。 **环境变量(可选)**: ```bash # Windows set PORT=8080 set DATABASE_URL="postgresql://postgres:postgres@localhost:5432/marketdata" set TUSHARE_TOKEN="your_token" # Linux/Mac export PORT=8080 export DATABASE_URL="postgresql://postgres:postgres@localhost:5432/marketdata" export TUSHARE_TOKEN="your_token" ``` ### 3.5 初始化数据库 ```bash # 使用Python初始化(SQLAlchemy会自动创建表) python -c "from app.repositories.database import init_db; init_db()" # 或使用SQL脚本(与Go相同) psql postgresql://postgres:postgres@localhost:5432/marketdata -f memory/2026-03-07-database-schema.sql ``` ### 3.6 启动服务 **方式一:直接运行(开发模式)** ```bash # 确保在虚拟环境中 source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows # 启动服务 python -m app.main ``` **预期输出:** ``` INFO: Uvicorn running on http://0.0.0.0:8080 INFO: Application startup complete. Admin dashboard: http://localhost:8080/admin ``` **方式二:使用Uvicorn(推荐)** ```bash # 开发模式(热重载) uvicorn app.main:app --reload --port 8080 # 生产模式 uvicorn app.main:app --host 0.0.0.0 --port 8080 --workers 4 ``` **方式三:使用Gunicorn(Linux/Mac)** ```bash gunicorn app.main:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8080 ``` ### 3.7 同步基础数据(可选) ```bash # 同步股票列表 python scripts/sync_data.py --type stocks # 同步期货列表 python scripts/sync_data.py --type futures # 同步交易日历 python scripts/sync_data.py --type calendar --start 20240101 --end 20241231 ``` --- ## 四、访问管理后台 ### 4.1 打开管理后台 服务启动后,在浏览器中访问: ``` http://localhost:8080/admin ``` ### 4.2 功能导航 | 菜单 | 功能描述 | 主要操作 | |------|----------|----------| | **📈 系统概览** | 查看系统运行状态 | 查看状态卡片、内存使用、执行热加载/重启 | | **⚙️ 配置管理** | 在线修改系统配置 | 编辑服务器/数据库/Redis/数据源配置 | | **🔌 数据源适配** | 管理数据适配器 | 启用/禁用适配器、修改适配器配置 | | **🧪 接口测试** | 测试API和WebSocket | 运行接口测试、查看测试历史 | ### 4.3 API文档(Python特有) FastAPI自动生成API文档: - Swagger UI: `http://localhost:8080/docs` - ReDoc: `http://localhost:8080/redoc` ### 4.4 首次使用步骤 **步骤1: 查看系统状态** 1. 打开 `http://localhost:8080/admin` 2. 默认进入"系统概览"页面 3. 查看运行状态、运行时长、内存使用等信息 **步骤2: 配置数据源(可选)** 1. 点击左侧"配置管理" 2. 找到"数据源配置"部分 3. 输入 Tushare Token 4. 点击"保存配置" **步骤3: 测试接口** 1. 点击左侧"接口测试" 2. 选择"API测试"页签 3. 点击任意测试用例的"运行测试"按钮 4. 查看测试结果 --- ## 五、常见问题 ### 5.1 端口被占用 **错误信息:** ``` listen tcp :8080: bind: Only one usage of each socket address... ``` **解决方案:** **Go:** ```bash set PORT=8081 go run ./cmd/server ``` **Python:** ```bash set PORT=8081 python -m app.main # 或 uvicorn app.main:app --port 8081 ``` ### 5.2 数据库连接失败 **Go:** ```bash # 启动 PostgreSQL 服务 # Windows: 服务管理器启动 postgresql-x64-15 # Linux: sudo systemctl start postgresql # 或使用 Docker docker run -d --name postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 postgres:15 ``` **Python:** ```bash # 检查SQLAlchemy连接字符串格式 # 应该是: postgresql://user:password@host:port/database # 测试连接 python -c "from app.repositories.database import engine; print('OK')" ``` ### 5.3 依赖问题 **Go - 依赖下载失败:** ```bash go env -w GOPROXY=https://goproxy.cn,direct go mod download ``` **Python - 依赖安装失败:** ```bash # 升级pip pip install --upgrade pip # 安装系统依赖(Ubuntu/Debian) sudo apt install -y python3-dev libpq-dev gcc # 使用国内镜像 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple ``` ### 5.4 Python特有 - 模块导入错误 **错误信息:** ``` ModuleNotFoundError: No module named 'app' ``` **解决方案:** ```bash # 确保在项目根目录 cd python_market_data_service # 设置PYTHONPATH export PYTHONPATH=$(pwd) # Linux/Mac # 或 set PYTHONPATH=%cd% # Windows # 或者使用 -m 方式运行 python -m app.main ``` ### 5.5 管理后台页面空白 **排查步骤:** 1. **检查服务是否正常运行** ```bash curl http://localhost:8080/v1/admin/health # 应返回: {"status":"healthy",...} ``` 2. **检查端口是否正确** ```bash # Windows netstat -an | findstr LISTENING # Linux/Mac netstat -tlnp | grep 8080 ``` 3. **检查浏览器控制台** - F12 打开开发者工具 - 查看 Console 是否有报错 ### 5.6 热加载不生效 **Go:** ```bash # 确认配置文件路径 echo %CONFIG_PATH% # 调用热加载 API 测试 curl -X POST http://localhost:8080/v1/admin/system/reload ``` **Python:** ```bash # Python自动支持热重载(开发模式) # 修改代码后服务会自动重启 # 配置热加载 curl -X POST http://localhost:8080/v1/admin/system/reload ``` --- ## 六、API 测试 ### 6.1 使用 curl 测试 **健康检查:** ```bash curl http://localhost:8080/v1/admin/health ``` **系统状态查询:** ```bash curl http://localhost:8080/v1/admin/system/status ``` **热加载配置:** ```bash curl -X POST http://localhost:8080/v1/admin/system/reload \ -H "Content-Type: application/json" \ -d '{"config_type": "source"}' ``` ### 6.2 使用 httpie 测试(推荐) ```bash # 安装 httpie pip install httpie # 系统状态 http :8080/v1/admin/system/status # 热加载 http POST :8080/v1/admin/system/reload config_type=source # 获取适配器列表 http :8080/v1/admin/adapters # 执行测试 http POST :8080/v1/admin/tests/api/run \ id=stock_klines \ params:='{"symbol": "000001.SZ"}' ``` --- ## 七、生产环境部署 ### 7.1 Go 实现 ```bash # 设置生产模式 set GIN_MODE=release # 编译 set GOOS=linux set GOARCH=amd64 go build -ldflags="-s -w" -o market-server ./cmd/server # 运行 ./market-server ``` ### 7.2 Python 实现 ```bash # 安装生产依赖 pip install -r requirements.txt # 使用Gunicorn(Linux/Mac) gunicorn app.main:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8080 # 或使用Uvicorn uvicorn app.main:app --host 0.0.0.0 --port 8080 --workers 4 ``` ### 7.3 Docker 部署 **Go:** ```dockerfile FROM golang:1.21-alpine AS builder WORKDIR /app COPY . . RUN go build -o market-server ./cmd/server FROM alpine:latest COPY --from=builder /app/market-server . EXPOSE 8080 CMD ["./market-server"] ``` **Python:** ```dockerfile FROM python:3.10-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . EXPOSE 8080 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"] ``` --- ## 附录 ### A. 目录结构 **Go实现:** ``` market-data-service/ ├── api/ # API 定义 ├── cmd/ # 程序入口 │ └── server/ │ └── main.go # 主程序 ├── config.json # 配置文件 ├── docs/ # 文档目录 ├── internal/ # 内部实现 └── pkg/ # 公共包 ``` **Python实现:** ``` python_market_data_service/ ├── app/ # 应用代码 │ ├── api/ # API路由 │ ├── core/ # 核心模块 │ ├── models/ # 数据模型 │ ├── repositories/ # 数据访问 │ ├── services/ # 业务服务 │ ├── adapters/ # 数据源适配器 │ ├── websocket/ # WebSocket服务 │ └── main.py # 主程序 ├── scripts/ # 工具脚本 ├── config.json # 配置文件 ├── requirements.txt # Python依赖 └── README.md # 项目说明 ``` ### B. 默认端口 | 服务 | 端口 | 说明 | |------|------|------| | HTTP API | 8080 | REST API 服务 | | WebSocket | 8080 | 共用 HTTP 端口 | | PostgreSQL | 5432 | 数据库 | ### C. 相关文档 - [部署文档](../DEPLOY.md) - [开发文档](./admin-dashboard-development.md) - [API 速查表](./admin-api-quick-reference.md) - [架构设计](./architecture.md) - [开发指南](./development-guide.md) - [Python迁移指南](../python_market_data_service/MIGRATION_GUIDE.md) --- **文档结束**