尧图精选

PanWatch K 线获取合并机制:高并发请求如何被合并成一次抓取

🕒 发布时间:2026/10/2 5:09:15 📁 来源:尧图网络
PanWatch K 线获取合并机制高并发请求如何被合并成一次抓取【免费下载链接】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/PanWatchPanWatch盯盘侠是一款覆盖 A股 / 港股 / 美股的 AI 盯盘工具提供持仓分析、实时价格提醒与自动报告。它的所有盯盘任务都依赖同一个基础数据——K 线。多个任务同时取同一只股票的 K 线时PanWatch 的K 线获取合并机制会把几十次并发请求合并成一次网络抓取既保护上游数据源又让每次盯盘更快更稳。本文带你弄懂这套机制的三层防线。为什么需要合并一个真实的高并发场景PanWatch 内部有不少数据消费者会在收盘后同时醒来干活机会扫描entry_candidates批量计算候选股的入场信号策略引擎 / 回测strategy_engine / backtest对持仓与观察池取 K 线组合归因分析每只股票的贡献价格提醒、盘中监控、每日报告也在各自轮询行情假设 5 个任务同时要贵州茅台的 120 日 K 线。如果没有合并机制就是 5 次完全相同的网络请求——轻则浪费重则触发数据源限流甚至断连日志里会刷出一大片 Server disconnected下一轮再来一遍形成恶性循环。K线合并机制的核心就一句话同一只股票的并发取数只允许一个线程真正联网其余线程排队等待并直接复用结果。三层防线一次 get_klines 调用的完整旅程K 线采集器位于 kline_collector.py每次get_klines(symbol, days)调用会依次经过三道关卡第一层快路径——正缓存直接命中请求先到内存正缓存里查一下key 为市场:股票代码。缓存带TTL存活时间且根据市场状态自动调节场景交易时段收盘后正缓存 TTL180 秒末根 K 线盘中还在动需刷新1800 秒日 K 已定稿可放心复用失败冷却时间60 秒尽快重试900 秒数据已定稿重试无意义命中新鲜且条数足够的缓存时不加锁、不联网直接返回切片——这是最常见的路径。第二层并发合并——5 个请求1 次联网缓存没命中时请求会去拿这只股票专属的取数锁不同股票用不同的锁互不阻塞。锁内先二次检查缓存——很可能在你排队时先到的线程已经把新数据写进缓存了于是直接返回。只有真正第一个线程才会执行联网抓取。效果上5 个并发请求同一只股票 → 数据源只收到 1 次请求其余 4 个在毫秒级拿到同一份结果。不同股票之间则完全并行不存在一只股票卡住拖慢全场的问题。第三层失败负缓存——冷却窗口内不再添乱如果那次唯一联网失败了数据源断连、限流或者只取回不足条数的数据港股数据源偶尔只返回少量 K 线PanWatch 会写入一条冷却标记冷却窗口内同一只股票的所有请求直接返回缓存里的旧数据或空结果不再联网部分数据也会被缓存下来续命避免每轮都重打补全源刷屏日志一旦取到完整数据冷却标记立即清除恢复正常节奏这一层尤其针对空结果不缓存 → 每个消费者每轮重复打爆数据源的老问题从根上掐断重试风暴。幕后功臣数据源主备调度器联网这一步并不是裸调接口而是交给独立的 marketdata 包的调度引擎见 engine.py它按用户配置的优先级链依次尝试各数据源腾讯、新浪、东方财富、Yahoo 等首个满足min_count条数要求的源即返回条数不足则继续换更优的源如美股 tencent → stooqA股/港股 → eastmoney 补全。每次取数的耗时、成败都会记入指标方便在数据源管理页排查健康状态。对外接口同样受益无论是单只 K 线、批量 K 线还是 K 线摘要批量接口klines.py批量摘要接口还限制了并发线程数最终都收敛到同一个合并后的采集器从入口到出口只有一条数据通路。用测试固化行为5 并发 1 次联网这套机制有专门的回归测试test_kline_fetch_coalesce.py用假数据源精确计数联网次数测试场景断言结果5 个线程并发取同一只股票实际联网1 次取数失败后冷却窗口内再次调用联网次数保持1 次短路两个不同股票先后取数各联网1 次互不阻塞港股只取回 30/120 条不足也进入冷却后续不再联网测试即文档——任何人修改缓存或锁逻辑时这些用例会立刻告诉你是不是破坏了合并语义。对普通用户意味着什么盯盘更快批量任务共享一份 K 线数据收盘后首次全量扫描不会排队等网络提醒更可靠不再出现数据源被打挂 → 一整轮监控空跑的连锁故障报告更准正缓存保证同一段时间内报告、机会扫描、技术指标看的是同一份数据对数据源更友好合并 冷却相当于内置的限流器降低被上游封禁的风险延伸阅读K 线采集器与三层防线实现kline_collector.py数据源主备调度与指标记录packages/marketdata/src/marketdata/engine.py合并机制回归测试tests/test_kline_fetch_coalesce.py批量 K 线 / 摘要 APIsrc/modules/market/api/klines.py市场代码与交易时段定义决定 TTL 与冷却src/platform/marketdata/models.py一句话总结PanWatch 用正缓存快路径 同标的并发合并 失败负缓存三层防线把高并发的 K 线获取压缩成一次抓取——数据源少被打、任务跑得快、结果还一致这正是 AI 盯盘工具能全天候稳定运转的地基。【免费下载链接】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),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →