388 lines
9.3 KiB
Markdown
388 lines
9.3 KiB
Markdown
# 数据源冗余机制使用指南
|
||
|
||
## 📋 功能概述
|
||
|
||
系统已实现**Akshare和Tushare双数据源自动切换机制**,当Akshare获取数据失败时,系统会自动切换到Tushare获取数据,确保数据获取的稳定性和可靠性。
|
||
|
||
## ✨ 核心特性
|
||
|
||
### 1. 自动切换
|
||
- ✅ 优先使用Akshare(免费,无需配置)
|
||
- ✅ Akshare失败时自动切换到Tushare
|
||
- ✅ 全程自动化,无需手动干预
|
||
- ✅ 详细的日志输出,方便追踪数据来源
|
||
|
||
### 2. 支持的数据类型
|
||
|
||
| 数据类型 | Akshare | Tushare | 说明 |
|
||
|---------|---------|---------|------|
|
||
| 股票历史数据 | ✅ | ✅ | K线、成交量等 |
|
||
| 股票基本信息 | ✅ | ✅ | 名称、行业、市值等 |
|
||
| 实时行情 | ✅ | ✅ | 最新价格、涨跌幅 |
|
||
| 财务数据 | ✅ | ✅ | 利润表、资产负债表 |
|
||
| 资金流向 | ✅ | ✅ | 大单、小单流入流出 |
|
||
| 市场情绪 | ✅ | ✅ | ARBR、换手率 |
|
||
| 大盘指数 | ✅ | ✅ | 上证指数等 |
|
||
|
||
## 🔧 配置步骤
|
||
|
||
### 第一步:获取Tushare Token
|
||
|
||
1. 访问 [Tushare官网](https://tushare.pro)
|
||
2. 注册账号并登录
|
||
3. 进入个人中心
|
||
4. 复制Token
|
||
|
||
### 第二步:配置环境变量
|
||
|
||
#### 方法1:通过界面配置(推荐)
|
||
|
||
1. 启动系统
|
||
2. 点击左侧 **⚙️ 环境配置**
|
||
3. 切换到 **📊 数据源配置** 标签页
|
||
4. 填写 **Tushare Token**
|
||
5. 点击 **💾 保存配置**
|
||
|
||
#### 方法2:手动编辑.env文件
|
||
|
||
在`.env`文件中添加:
|
||
|
||
```bash
|
||
# Tushare数据接口配置(可选,用作备用数据源)
|
||
TUSHARE_TOKEN="your_tushare_token_here"
|
||
```
|
||
|
||
### 第三步:重启应用
|
||
|
||
保存配置后重启应用,系统会自动初始化Tushare数据源。
|
||
|
||
## 📊 工作原理
|
||
|
||
### 数据获取流程
|
||
|
||
```
|
||
┌─────────────────┐
|
||
│ 开始获取数据 │
|
||
└────────┬────────┘
|
||
│
|
||
v
|
||
┌─────────────────┐
|
||
│ 尝试Akshare获取 │
|
||
└────────┬────────┘
|
||
│
|
||
成功 │ 失败
|
||
┌──────┴──────┐
|
||
│ │
|
||
v v
|
||
┌────┐ ┌──────────────┐
|
||
│返回│ │检查Tushare配置│
|
||
└────┘ └──────┬───────┘
|
||
│
|
||
已配置 │ 未配置
|
||
┌──────┴──────┐
|
||
│ │
|
||
v v
|
||
┌────────────┐ ┌────┐
|
||
│Tushare获取 │ │失败│
|
||
└──────┬─────┘ └────┘
|
||
│
|
||
成功 │ 失败
|
||
┌──────┴──────┐
|
||
│ │
|
||
v v
|
||
┌────┐ ┌────┐
|
||
│返回│ │失败│
|
||
└────┘ └────┘
|
||
```
|
||
|
||
### 日志输出示例
|
||
|
||
```bash
|
||
# 示例1:Akshare成功
|
||
[Akshare] 正在获取 600519 的历史数据...
|
||
[Akshare] ✅ 成功获取 243 条数据
|
||
|
||
# 示例2:Akshare失败,Tushare成功
|
||
[Akshare] 正在获取 600519 的历史数据...
|
||
[Akshare] ❌ 获取失败: Connection timeout
|
||
[Tushare] 正在获取 600519 的历史数据(备用数据源)...
|
||
[Tushare] ✅ 成功获取 243 条数据
|
||
|
||
# 示例3:Tushare未配置
|
||
[Akshare] 正在获取 600519 的历史数据...
|
||
[Akshare] ❌ 获取失败: Connection timeout
|
||
ℹ️ 未配置Tushare Token,将仅使用Akshare数据源
|
||
❌ 所有数据源均获取失败
|
||
```
|
||
|
||
## 🎯 使用场景
|
||
|
||
### 场景1:日常使用(仅Akshare)
|
||
|
||
**适用情况**:
|
||
- 网络稳定
|
||
- Akshare服务正常
|
||
- 不需要Tushare特殊数据
|
||
|
||
**配置**:
|
||
- 无需配置Tushare Token
|
||
- 系统仅使用Akshare
|
||
|
||
### 场景2:生产环境(Akshare + Tushare)
|
||
|
||
**适用情况**:
|
||
- 需要高可用性
|
||
- 自动化交易系统
|
||
- 定时任务分析
|
||
|
||
**配置**:
|
||
- 配置Tushare Token
|
||
- 启用双数据源冗余
|
||
|
||
### 场景3:Akshare受限
|
||
|
||
**适用情况**:
|
||
- Akshare访问受限
|
||
- 需要更专业的数据
|
||
- Tushare有特殊接口
|
||
|
||
**配置**:
|
||
- 配置Tushare Token
|
||
- 系统自动切换到Tushare
|
||
|
||
## 📈 数据对比
|
||
|
||
### Akshare vs Tushare
|
||
|
||
| 对比项 | Akshare | Tushare |
|
||
|--------|---------|---------|
|
||
| **费用** | 完全免费 | 免费(有限额) |
|
||
| **注册** | 无需注册 | 需要注册 |
|
||
| **配置** | 无需配置 | 需要Token |
|
||
| **数据更新** | 实时 | 准实时 |
|
||
| **稳定性** | 较好 | 优秀 |
|
||
| **数据量** | 丰富 | 非常丰富 |
|
||
| **API限制** | 无明显限制 | 有调用限额 |
|
||
| **适用场景** | 日常分析 | 专业投研 |
|
||
|
||
## 🔍 故障排查
|
||
|
||
### 问题1:Tushare初始化失败
|
||
|
||
**现象**:
|
||
```
|
||
⚠️ Tushare数据源初始化失败: No module named 'tushare'
|
||
```
|
||
|
||
**解决方法**:
|
||
```bash
|
||
# 安装tushare库
|
||
pip install tushare>=1.3.0
|
||
|
||
# 或更新requirements.txt后安装
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 问题2:Tushare Token无效
|
||
|
||
**现象**:
|
||
```
|
||
[Tushare] ❌ 获取失败: Invalid token
|
||
```
|
||
|
||
**解决方法**:
|
||
1. 检查Token是否正确复制
|
||
2. 确认Token未过期
|
||
3. 登录Tushare官网重新获取Token
|
||
|
||
### 问题3:Tushare调用限额
|
||
|
||
**现象**:
|
||
```
|
||
[Tushare] ❌ 获取失败: API call limit exceeded
|
||
```
|
||
|
||
**解决方法**:
|
||
1. 等待限额重置(通常是每分钟/每天)
|
||
2. 升级Tushare积分等级
|
||
3. 优化查询频率
|
||
|
||
### 问题4:两个数据源都失败
|
||
|
||
**现象**:
|
||
```
|
||
❌ 所有数据源均获取失败
|
||
```
|
||
|
||
**解决方法**:
|
||
1. 检查网络连接
|
||
2. 确认股票代码正确
|
||
3. 检查是否为交易时间
|
||
4. 查看详细错误日志
|
||
|
||
## 💡 最佳实践
|
||
|
||
### 1. Token管理
|
||
|
||
```bash
|
||
# ❌ 错误:直接写在代码中
|
||
tushare_token = "your_token_here"
|
||
|
||
# ✅ 正确:使用环境变量
|
||
TUSHARE_TOKEN="your_token_here" # 在.env文件中
|
||
```
|
||
|
||
### 2. 错误处理
|
||
|
||
系统已自动处理数据获取失败的情况,无需额外编码。
|
||
|
||
### 3. 日志监控
|
||
|
||
关注日志中的以下标记:
|
||
- `[Akshare]` - Akshare数据源操作
|
||
- `[Tushare]` - Tushare数据源操作
|
||
- `✅` - 操作成功
|
||
- `❌` - 操作失败
|
||
- `⚠️` - 警告信息
|
||
|
||
### 4. 性能优化
|
||
|
||
- 优先使用Akshare(响应更快)
|
||
- Tushare作为备用(更稳定)
|
||
- 合理设置数据缓存
|
||
- 避免频繁重复请求
|
||
|
||
## 📝 代码示例
|
||
|
||
### 自动使用数据源管理器
|
||
|
||
所有数据获取模块已自动集成数据源管理器,无需修改业务代码:
|
||
|
||
```python
|
||
# 在stock_data.py中
|
||
from data_source_manager import data_source_manager
|
||
|
||
# 获取历史数据(自动切换)
|
||
df = data_source_manager.get_stock_hist_data(
|
||
symbol="600519",
|
||
start_date="20240101",
|
||
end_date="20241018",
|
||
adjust='qfq'
|
||
)
|
||
```
|
||
|
||
### 手动使用数据源管理器
|
||
|
||
如需在自定义模块中使用:
|
||
|
||
```python
|
||
from data_source_manager import data_source_manager
|
||
|
||
# 1. 获取股票历史数据
|
||
hist_data = data_source_manager.get_stock_hist_data(
|
||
symbol="600519",
|
||
start_date="20240101",
|
||
end_date="20241018"
|
||
)
|
||
|
||
# 2. 获取股票基本信息
|
||
basic_info = data_source_manager.get_stock_basic_info("600519")
|
||
|
||
# 3. 获取实时行情
|
||
quotes = data_source_manager.get_realtime_quotes("600519")
|
||
|
||
# 4. 获取财务数据
|
||
financial = data_source_manager.get_financial_data(
|
||
symbol="600519",
|
||
report_type='income' # income/balance/cashflow
|
||
)
|
||
```
|
||
|
||
## 🔐 安全建议
|
||
|
||
### Token保护
|
||
|
||
1. **不要**将Token提交到版本控制
|
||
```bash
|
||
# 在.gitignore中添加
|
||
.env
|
||
```
|
||
|
||
2. **不要**在代码中硬编码Token
|
||
|
||
3. **定期**更换Token
|
||
|
||
4. **限制**Token的使用范围
|
||
|
||
## 📊 监控与统计
|
||
|
||
### 查看数据源使用情况
|
||
|
||
系统日志会记录每次数据获取使用的数据源,便于统计:
|
||
|
||
```bash
|
||
# 统计示例(从日志中提取)
|
||
Akshare成功: 95次
|
||
Tushare备用: 5次
|
||
全部失败: 0次
|
||
|
||
成功率: 100%
|
||
Tushare使用率: 5%
|
||
```
|
||
|
||
## 🎓 进阶功能
|
||
|
||
### 1. 自定义数据源优先级
|
||
|
||
当前默认:Akshare > Tushare
|
||
|
||
如需修改,编辑`data_source_manager.py`中的获取顺序。
|
||
|
||
### 2. 添加更多数据源
|
||
|
||
可以扩展`DataSourceManager`类,添加其他数据源(如Wind、东方财富等)。
|
||
|
||
### 3. 数据源监控告警
|
||
|
||
可以添加监控逻辑,当某个数据源失败率过高时发送告警。
|
||
|
||
## 📞 技术支持
|
||
|
||
### 相关文档
|
||
|
||
- [Akshare官方文档](https://akshare.akfamily.xyz)
|
||
- [Tushare官方文档](https://tushare.pro/document/2)
|
||
- [环境配置功能说明](./环境配置功能说明.md)
|
||
|
||
### 常见问题
|
||
|
||
1. **Q: 是否必须配置Tushare?**
|
||
A: 不是。仅使用Akshare也可以正常工作,Tushare作为可选的备用数据源。
|
||
|
||
2. **Q: Tushare免费版有限制吗?**
|
||
A: 有。免费版有每分钟调用次数限制,可通过做任务获得积分提升限额。
|
||
|
||
3. **Q: 数据源切换会影响性能吗?**
|
||
A: 影响很小。只有在Akshare失败时才会尝试Tushare,增加的延迟在可接受范围内。
|
||
|
||
4. **Q: 可以只使用Tushare吗?**
|
||
A: 可以,但不推荐。系统设计为优先Akshare,这样可以节省Tushare的调用额度。
|
||
|
||
## 🎉 总结
|
||
|
||
数据源冗余机制为系统提供了:
|
||
|
||
- ✅ **更高的可用性** - 单点故障不影响使用
|
||
- ✅ **更好的稳定性** - 自动容错恢复
|
||
- ✅ **更强的灵活性** - 可扩展多数据源
|
||
- ✅ **零学习成本** - 全自动化运行
|
||
|
||
现在您可以放心使用系统进行股票分析,无需担心数据获取问题!
|
||
|
||
---
|
||
|
||
**更新日期**: 2025-10-18
|
||
**版本**: v1.0.0
|
||
**适用系统**: AI股票分析系统
|
||
|