新闻详情

新闻详情

首页 / 资讯中心 / 详情

【Python 量化取数指南 #15】Python 做数据源灾备:一家挂了自动切

发布时间:2026/9/28 18:05:44来源:尧图网络
【Python 量化取数指南 #15】Python 做数据源灾备:一家挂了自动切
【Python 量化取数指南 #15】Python 做数据源灾备一家挂了自动切系列《Python 量化取数指南》连载项目 · 纯 GET 取数 · 仅依赖 requests适用怕单一数据源抖动/限流/停服导致策略中断想做自动降级的人。1. 你将得到什么一个多源取数层封装注册多个来源按优先级自动尝试一家挂了切下一家一个「实时快照 历史 K 线」双源兜底的完整示例一个离线run_check()模拟主源失败自动降级2. 本篇取数约定用第 3 篇的_get做单源请求本篇在其上包一层「源注册表 顺序兜底」同一数据可注册多个等价端点如快照类 vs 历史类互为兜底或不同证书/节点请求GET https://api.zhituapi.compath?token你的token兜底原则成功即返回全部失败才报错带超时与重试避免单源拖死3. 核心模板全系列复用 灾备层importtime,json,requests BASEhttps://api.zhituapi.comTOKEN你的tokendef_get(path,paramsNone,timeout15,retry3,backoff1.5):paramsdict(paramsor{})params[token]TOKEN urlBASEpath lastNoneforiinrange(retry):try:rrequests.get(url,paramsparams,timeouttimeout)ifr.status_code!200:lastfHTTP{r.status_code}{r.text[:120]}time.sleep(backoff*(i1));continuetry:returnr.json(),NoneexceptValueError:lastf非JSON响应:{r.text[:120]}returnNone,lastexceptrequests.RequestExceptionase:laststr(e);time.sleep(backoff*(i1))returnNone,lastdef_hit_key(d,*keys,defaultNone):ifnotisinstance(d,dict):returndefaultforkinkeys:ifkindandd[k]notin(None,,[]):returnd[k]returndefaultdef_to_float(x,defaultfloat(nan)):try:returnfloat(x)except(TypeError,ValueError):returndefault4. 跑通示例多源兜底取数deffetch_with_fallback(sources):# sources: list[(path, parser)]按优先级尝试成功即返回forpath,parserinsources:data,err_get(path,timeout8,retry2)iferr:print(f 源{path}不可用:{err})continuereturnparser(data),NonereturnNone,所有源均失败defdemo_failover():# 同一「指数行情」注册两个等价来源做兜底sources[(/hz/history/fsjy/000001.SH/d,lambdad:(difisinstance(d,list)elsed.get(data)or[])),# 主历史K线(/hz/list/hszs,lambdad:(difisinstance(d,list)elsed.get(data)or[])),# 备指数列表]rows,errfetch_with_fallback(sources)iferr:print(全部失败:,err)else:print(f 兜底成功取到{len(rows)}条)defrun_check():# 模拟主源失败、备源成功called[]deffake_get(path,**kw):called.append(path)ifpath/hz/history/fsjy/000001.SH/d:returnNone,timeout# 主源挂return[{code:000001.SH,name:上证}],Noneglobal_get _orig_get _getfake_gettry:rows,errfetch_with_fallback([(/hz/history/fsjy/000001.SH/d,lambdad:d),(/hz/list/hszs,lambdad:d)])print(f [run_check] 主源失败后降级取到{len(rows)}条调用顺序{called})finally:_get_origif__name____main__:demo_failover()run_check()返回字段说明fetch_with_fallback返回(parsed, None)或(None, 所有源均失败)sources是(path, parser)元组列表按注册顺序尝试。生产环境可把不同证书/节点/供应商分别注册为一项。5. 坑与注意事项语义等价才能兜底两个源返回结构可能不同parser 要各自对齐别直接混用。缩短单源超时兜底层单源timeout要短如 8s否则一家慢会拖垮整体。别无限重试单源retry调小如 2把「快速失败」交给下一源。记录谁挂了生产要打日志/告警别静默切换导致一直用慢源。频率预算兜底源也可能被同一证书限流切换后注意总调用量。字段名三套解析仍用_hit_key兜字段名差异。6. 常见报错速查报错 / 现象原因处理一直用慢源主源半死不活缩短 timeout 告警解析错乱两源结构不同parser 各自对齐全失败都限流/挂降频 加第三源KeyError字段名不符print(data)看真实 key7. 小结与下一篇预告小结灾备 「源注册表 按序尝试 成功即返 全部失败才报错」关键是语义等价 parser、短超时、快速失败、打告警。下一篇计划写 #16《Python 量化取数避坑8 类数据接口选型总览》汇总本系列 8 类数据的选型矩阵与避坑清单方便你一次性对照。8. 免责声明本文仅演示公开数据接口的用法所有代码示例均为演示数据不构成任何投资建议实际返回字段以接口文档与你的证书权限为准。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

OpenBiliClaw架构解析:Agent编排、灵魂画像、五层记忆与发现引擎全景图 2026/9/28 20:33:54

OpenBiliClaw架构解析:Agent编排、灵魂画像、五层记忆与发现引擎全景图

OpenBiliClaw架构解析:Agent编排、灵魂画像、五层记忆与发现引擎全景图 【免费下载链接】OpenBiliClaw 本地私有、开源的自进化跨平台 AI 内容发现 Agent:先理解你,再主动从 B站、小红书、抖音、YouTube、X、知乎、Reddit、微博等平台与开放 …

阅读更多 →
原生Servlet+JDBC点餐系统:从请求路由到事务处理的完整实战解析 2026/9/28 20:33:54

原生Servlet+JDBC点餐系统:从请求路由到事务处理的完整实战解析

简介:基于MVC开发模式的原生Servlet与JDBC点餐系统完整项目,面向Java Web学习者、毕业设计与课程设计人群,可用于理解经典三层协作在真实业务中的落地方式。压缩包共139个文件,包含21个jsp页面、6个java源码、6个class编译文件、7…

阅读更多 →
GitHub 热榜项目:周榜(2026-09-27) 2026/9/28 20:33:54

GitHub 热榜项目:周榜(2026-09-27)

本期共收录 18 个热门开源项目,合计新增 ⭐ 56,645 stars,热门语言:Python、TypeScript、JavaScript。 数据来源:GitHub Trending | 统计周期:周榜 | 更新日期:2026-09-27 📝 本期综述 给编码智…

阅读更多 →
合肥GEO优化服务商怎么选?排名前五实力公司参考汇总 2026/9/28 20:33:47

合肥GEO优化服务商怎么选?排名前五实力公司参考汇总

合肥GEO优化服务商怎么选?排名前五实力公司参考汇总 开篇:合肥GEO优化用户的4大典型踩坑难题在合肥寻找GEO优化服务商的企业主,大多都曾在选型过程中踩过不少隐性坑。从搜索结果看,用户高频吐槽的痛点主要集中在这四个方面: 选了…

阅读更多 →
代码托管平台访问慢与下载卡顿的排查思路与加速方案 2026/9/28 20:33:47

代码托管平台访问慢与下载卡顿的排查思路与加速方案

1. 从一次拉取代码卡了四十分钟说起那天下午我在调一个开源项目的构建脚本,git clone一条命令敲下去,进度条像被冻住一样,十分钟走了不到百分之三。我一开始以为是仓库太大,换了个小仓库试,结果一样。打开浏览器想直接…

阅读更多 →
Sphinx 4.2 版本解析:autodoc 类属性支持、mock 对象警告与 C/C++ 类型体系扩展 2026/9/28 20:33:47

Sphinx 4.2 版本解析:autodoc 类属性支持、mock 对象警告与 C/C++ 类型体系扩展

文档开发工具 【免费下载链接】sphinx The Sphinx documentation generator 项目地址: https://gitcode.com/gh_mirrors/sp/sphinx 点击查看 免费下载 Sphinx 4.2.0 是 Sphinx 文档生成器于 2021 年 9 月 12 日发布的一个重要维护版本,聚焦于 autodoc 扩…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉