Files
aiagents-stock/docs/数据源冗余机制使用指南.md
T

388 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 数据源冗余机制使用指南
## 📋 功能概述
系统已实现**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
# 示例1Akshare成功
[Akshare] 正在获取 600519 的历史数据...
[Akshare] ✅ 成功获取 243 条数据
# 示例2Akshare失败,Tushare成功
[Akshare] 正在获取 600519 的历史数据...
[Akshare] ❌ 获取失败: Connection timeout
[Tushare] 正在获取 600519 的历史数据(备用数据源)...
[Tushare] ✅ 成功获取 243 条数据
# 示例3Tushare未配置
[Akshare] 正在获取 600519 的历史数据...
[Akshare] ❌ 获取失败: Connection timeout
️ 未配置Tushare Token,将仅使用Akshare数据源
❌ 所有数据源均获取失败
```
## 🎯 使用场景
### 场景1:日常使用(仅Akshare
**适用情况**
- 网络稳定
- Akshare服务正常
- 不需要Tushare特殊数据
**配置**
- 无需配置Tushare Token
- 系统仅使用Akshare
### 场景2:生产环境(Akshare + Tushare
**适用情况**
- 需要高可用性
- 自动化交易系统
- 定时任务分析
**配置**
- 配置Tushare Token
- 启用双数据源冗余
### 场景3Akshare受限
**适用情况**
- Akshare访问受限
- 需要更专业的数据
- Tushare有特殊接口
**配置**
- 配置Tushare Token
- 系统自动切换到Tushare
## 📈 数据对比
### Akshare vs Tushare
| 对比项 | Akshare | Tushare |
|--------|---------|---------|
| **费用** | 完全免费 | 免费(有限额) |
| **注册** | 无需注册 | 需要注册 |
| **配置** | 无需配置 | 需要Token |
| **数据更新** | 实时 | 准实时 |
| **稳定性** | 较好 | 优秀 |
| **数据量** | 丰富 | 非常丰富 |
| **API限制** | 无明显限制 | 有调用限额 |
| **适用场景** | 日常分析 | 专业投研 |
## 🔍 故障排查
### 问题1Tushare初始化失败
**现象**
```
⚠️ Tushare数据源初始化失败: No module named 'tushare'
```
**解决方法**
```bash
# 安装tushare库
pip install tushare>=1.3.0
# 或更新requirements.txt后安装
pip install -r requirements.txt
```
### 问题2Tushare Token无效
**现象**
```
[Tushare] ❌ 获取失败: Invalid token
```
**解决方法**
1. 检查Token是否正确复制
2. 确认Token未过期
3. 登录Tushare官网重新获取Token
### 问题3Tushare调用限额
**现象**
```
[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股票分析系统