新闻详情

新闻详情

首页 / 资讯中心 / 详情

PanWatch 市场数据层架构深潜:可插拔数据源 + 主备故障转移是怎么做的

发布时间:2026/10/1 2:00:43来源:尧图网络
PanWatch 市场数据层架构深潜:可插拔数据源 + 主备故障转移是怎么做的
PanWatch 市场数据层架构深潜可插拔数据源 主备故障转移是怎么做的【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK US markets, powered by TradingAgents. Portfolio insights, real-time alerts automated reports.盯盘侠覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatch如果你用过 PanWatch 这类 AI 股票盯盘工具一定遇到过这样的烦恼行情接口偶尔抽风、K 线数据时多时少、某个数据商突然限流——页面直接一片空白。PanWatch 是一款覆盖 A股/港股/美股的 AI 盯盘工具持仓分析、实时提醒、自动报告它的市场数据层marketdata用一套可插拔数据源 主备故障转移架构让任一数据商挂掉变成对用户无感的内部细节。本文带你从零理解这套架构一条路径、四层结构、两个注入端口以及一次真实故障腾讯美股 K 线 501是怎么被改配置不改代码化解的。为什么盯盘工具必须先解决数据源会挂行情数据是所有功能的底座实时报价驱动价格提醒、K 线驱动技术指标、资金流向驱动机会扫描。而免费行情源腾讯、新浪、东财、stooq 等各有脾气——限流、风控、地区性 501、字段悄悄变更。PanWatch 的解法可以一句话概括调用方只认数据类型报价/日 K/资金流/快讯……不认数据商谁主谁备、谁开谁关全部外置成配置。一条路径、四层结构marketdata 的调用链整个数据抓取只有一条路径旧的多套实现已被彻底删除没有灰度 flag、没有回退分支分层非常干净层职责源码位置MarketData对象式 APIquotes()/klines()/capital_flow()…跨市场自动分组client.pyEngine每类型一个按 priority 主备链故障转移 TTL 缓存 指标记录engine.pyVendor每家数据源一个只做抓取 解析成标准类型内部无 fallbackvendors/base.pymarket_get统一 HTTP系统代理、按 host 节流、退避重试http.py这个包的关键设计是零宿主依赖它不碰 PanWatch 的 Web 层和数据库只依赖两个端口接口下文详解。因此它可以pip install到任何项目独立使用完整设计文档见 packages/marketdata/README.md。可插拔的钥匙两个注入端口 一个注册表ConfigProvider把谁主谁备外置成数据ConfigProvider只回答一个问题某数据类型在某市场下按优先级排好序的启用源有哪些独立使用时内置静态实现 StaticConfigProvider接入 PanWatch 后换成 DB 表驱动的实现 DbConfigProvider——它直接查DataSource表把每行provider、priority、enabled、config 凭证映射成SourceConfig。这意味着调整主备顺序、停用某个源、给它配上代理/cookie全部在「数据源」管理页完成datasources.py不用改代码、不用重启服务。MetricsSink每次取数都记账第二个端口MetricsSink接收每次取数的成败、条数、延迟端口定义见 ports.py。内置实现用滚动窗口统计每个 vendor 最近 100 次调用health()一行代码就能导出成功率、p50 延迟、最近错误直接喂给前端的数据源健康度面板。注册表type → vendor 的唯一真相源registry.py 里的VENDOR_CLASSES_BY_TYPE是权威清单quote有 tencent/sina/eastmoney/yfinance 四个候选kline有 tencent/stooq/eastmoney/yahoo 四个flash_news有财联社/新浪/东财三个……Engine 的 vendor 实例和某 type 合法 vendor 名集合都从这一张表自动派生不会出现改了调度忘了改注册的漂移。目前共覆盖 11 类数据类型、横跨 A股/港股/美股。另外Symbol值对象symbol.py统一归一化各市场的代码格式腾讯前缀、东财 secid、yfinance 后缀跨市场批量报价md.quotes([600519, 00700, AAPL])会自动识别市场并分组取数。主备故障转移的完整流程一次 fetch 到底发生了什么以取某只 A 股报价为例Engine.fetch的流程核心逻辑在 engine.py 第 34–89 行查缓存命中 TTL 缓存报价 5 秒短 TTL 防抖直接返回不打数据商按 priority 排序从ConfigProvider拿到主备链如 tencent → sina跳过未启用的、不支持当前市场的 vendor逐个尝试调用 vendor 抓取首个成功且非空的结果即返回并写缓存不足即转移K 线有min_count机制——某源条数不够比如只有 3 根要求 120 根视为不足继续试下一个所有源都不足时返回最长的那个而不是空手而归全部失败 → 软失败返回空结果而不抛异常fail-soft上层页面优雅降级每一步都记账无论成败延迟和错误原因都经MetricsSink落进健康度窗口。这套主备链 首胜即停 最劣兜底的模式让腾讯、东财、新浪任意一家限流或改版时用户侧感知接近于零。统一 HTTP 层节流、退避重试与代理所有 vendor 共用 market_get 发起请求把礼貌取数的规则收敛在一处按 host 节流对同一数据商保证最小请求间隔避免把自己打上榜单封禁名单退避重试失败后按backoff × 次数 随机抖动退避重试默认 2 次抖动避免多请求同时重试形成风暴尊重代理默认遵循环境变量中的 HTTP_PROXY/NO_PROXY宿主把 UI 的代理设置统一注入个别调用可用proxy显式覆盖错误可收集capture_errors()上下文能把真实失败原因从底层透传到测试数据源按钮的 UI而不是只显示一句无数据。实战案例腾讯美股 K 线 501零代码修复架构红利最直观的体现是一次真实故障处理腾讯美股 K 线接口在某些网络出口稳定返回 501。PanWatch 的做法不是去改 vendor 代码而是在 DbConfigProvider 里加了一条规则当类型是kline、市场是 US、且已启用 stooq/yahoo 兜底源时把 tencent 从优先级链里动态摘除。配置DataSource 表 端口ConfigProvider的组合把运维决策和抓取代码彻底解耦——这也是主备链里始终保留 stooq/yahoo 作为美股兜底的原因。K 线数据在界面上长这样而它背后其实是 tencent → eastmoney → stooq/yahoo 三级备胎在轮转数据源健康度health() 直接上屏因为每次取数都有账可查md.health()返回{vendor: {success_rate, p50_latency_ms, last_error, ...}}的内存快照PanWatch 把它直接渲染到「数据源」页面。哪个源成功率掉到 60%、哪个源延迟翻倍运维一目了然——主备链的备不再是摆设而是被持续观测的对象。4 步接入一个新数据源这套可插拔架构的扩展成本很低详见 packages/marketdata/README.md 的新增一个数据源章节在 vendors/ 写一个类继承对应标记基类QuoteVendor/KlineVendor…实现fetch()用market_get发请求在 registry.py 的VENDOR_CLASSES_BY_TYPE加一行Engine 实例与合法名单自动派生在配置端DB 种子或「数据源」页给它一条SourceConfig指定 priority 决定它排主还是排备写解析单测mockmarket_get全部测试不发真实网络。总结PanWatch 市场数据层的精髓可以浓缩成三点一条路径、四层结构MarketData → Engine → Vendor → market_get职责不越界主备是数据不是代码优先级链由 ConfigProvider 端口动态提供调主备顺序 改配置全链路可观测MetricsSink 记账 TTL 缓存 节流重试让数据商会挂从事故变成常态。如果你想深入源码推荐阅读顺序packages/marketdata/README.md设计总览→ engine.py主备调度核心→ src/platform/marketdata/marketdata_client.py宿主接线测试用例在 packages/marketdata/tests/ 可直接参考。【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK US markets, powered by TradingAgents. Portfolio insights, real-time alerts automated reports.盯盘侠覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

Adobe Substance 3D 2024-2025全链路更新实战:Painter、Designer、Sampler、Stager四件套深度评测 2026/10/1 2:42:01

Adobe Substance 3D 2024-2025全链路更新实战:Painter、Designer、Sampler、Stager四件套深度评测

Adobe Substance 3D系列在2024到2025这个时间节点上做了一次相当有分量的更新,圈子里讨论度很高。我前后用了大概三周时间,把Substance 3D Painter、Designer、Sampler和Stager这四个核心工具的新版本都跑了一遍,覆盖了从材质制作、纹理绘制到…

阅读更多 →
对象检测数据集解析:以 D2L 香蕉检测数据集为例的数据加载与标注格式实战指南 2026/10/1 2:41:54

对象检测数据集解析:以 D2L 香蕉检测数据集为例的数据加载与标注格式实战指南

文档教程人工智能深度学习NLP计算机视觉强化学习 【免费下载链接】d2l-en Interactive deep learning book with multi-framework code, math, and discussions. Adopted at 500 universities from 70 countries including Stanford, MIT, Harvard, and Cambridge. 项目地址&am…

阅读更多 →
2026网络安全职场全景:零基础转行路径、薪资真相与35岁危机 2026/10/1 2:41:54

2026网络安全职场全景:零基础转行路径、薪资真相与35岁危机

这两年我后台私信里,被问得最多的问题翻来覆去就是那么几个:“零基础转网络安全到底行不行?”“学网络安全是不是得先会写代码?”“听说网安岗35岁就被优化,是真的吗?”以及最经典的那个——“网上那些招聘…

阅读更多 →
OpenRig 内置 YOLO 策略:full-bypass 启动姿态的确定性选择机制与安全边界 2026/10/1 2:41:48

OpenRig 内置 YOLO 策略:full-bypass 启动姿态的确定性选择机制与安全边界

人工智能AI Agent多智能体Agent 编排代码智能体CLI 【免费下载链接】openrig Multi-agent harness that runs Claude Code and Codex together as one system 项目地址: https://gitcode.com/GitHub_Trending/op/openrig 点击查看 免费下载 OpenRig 是运行 Claude …

阅读更多 →
HowToCook 空气炸锅脆皮现腌炸鸡实战指南:先腌后炸的定量配方与全流程解析 2026/10/1 2:41:48

HowToCook 空气炸锅脆皮现腌炸鸡实战指南:先腌后炸的定量配方与全流程解析

文档教程 【免费下载链接】HowToCook Programmers guide about how to cook at home. 项目地址: https://gitcode.com/GitHub_Trending/ho/HowToCook 点击查看 免费下载 空气炸锅脆皮现腌炸鸡是 HowToCook 仓库 dishes/meat_dish/空气炸锅脆皮现腌炸鸡/空气炸锅脆皮…

阅读更多 →
Google ADK 实战:用 Gemini 构建有状态的 Stateful Echo Agent 2026/10/1 2:41:48

Google ADK 实战:用 Gemini 构建有状态的 Stateful Echo Agent

示例工程人工智能大模型 【免费下载链接】cookbook Examples and guides for using the Gemini API 项目地址: https://gitcode.com/GitHub_Trending/coo/cookbook 点击查看 免费下载 本文以 cookbook 仓库中 examples/google-adk 目录为核心,完整讲解 …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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