# 数据源冗余机制使用指南 ## 📋 功能概述 系统已实现**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股票分析系统