> 来源:PR #72 review 第三轮(medium);半 pre-existing(原 fast_info 路径同样吞错)。 ## 现状 `yfinance_conn.py` 的 `_fetch_ticker_sync` 调 `history(..., raise_errors=False)`:网络故障 / Yahoo 429 限流与"真正退市 / 无 1m 数据"都返回空 DataFrame → 上层统一抛 `ValueError('no 1m bars (delisted / OTC?)')`。 ## 危害 - 上层(/ticker → paper live runner)无法区分"暂时拉不到(该重试)"与"真没有(该放弃)" - 429 高发时段会被误判为标的无数据,错误提示误导排查方向 ## 修向 - `raise_errors=True` + 在 connector 层分类异常(网络/限流 → 可重试错误码;空数据 → 维持 ValueError),与 paper 侧 `_classify_build_error` 的 retryable 语义对齐 - 同族检查:`fetch_bars` 的 `except Exception: return []`(:120-127)也有同样的"失败与无数据不可区分"问题,与 #64(web_search 失败返 [])同模式,可一起收 ## 关联 #64 · PR #72
现状
yfinance_conn.py的_fetch_ticker_sync调history(..., raise_errors=False):网络故障 / Yahoo 429 限流与"真正退市 / 无 1m 数据"都返回空 DataFrame → 上层统一抛ValueError('no 1m bars (delisted / OTC?)')。危害
修向
raise_errors=True+ 在 connector 层分类异常(网络/限流 → 可重试错误码;空数据 → 维持 ValueError),与 paper 侧_classify_build_error的 retryable 语义对齐fetch_bars的except Exception: return [](:120-127)也有同样的"失败与无数据不可区分"问题,与 [data] web_search 失败与「无结果」不可区分 —— 超时/异常都返 [] #64(web_search 失败返 [])同模式,可一起收关联
#64 · PR #72