yfinance API无法正常使用,出现线程执行报错问题求助
yfinance WinError 10060 连接超时故障解决方案
根因说明
报错核心为WinError 10060 连接超时,属于网络层故障,并非yfinance包本身的代码问题:雅虎财经服务端对部分地区的网络请求存在访问限制,导致请求无法正常收到响应,这也是你重装/升级yfinance、使用相关修复工具都无法解决问题的核心原因。
可落地解决方案
- 先验证网络连通性:直接在本地浏览器打开雅虎财经官网
https://finance.yahoo.com/,如果无法正常加载,即可确认是网络访问限制导致的问题 - 配置请求代理:确认是网络限制后,可给yfinance的请求会话配置可用代理,示例代码如下:
import yfinance as yf import requests # 替换为你本地实际可用的代理地址与端口 proxies = { "http": "http://127.0.0.1:你的代理端口", "https": "http://127.0.0.1:你的代理端口" } # 给yfinance全局会话绑定代理 session = requests.Session() session.proxies.update(proxies) yf.base._session = session # 后续正常调用yfinance接口即可 msft = yf.Ticker("MSFT") print(msft.history(period="1d"))
- 调整超时阈值:如果网络本身延迟较高,可在调用接口时增加
timeout参数,调高超时阈值避免误报:
# 单标的查询 msft = yf.Ticker("MSFT") hist = msft.history(period="1mo", timeout=30) # 多标的批量下载 data = yf.download(["AAPL", "MSFT"], start="2023-01-01", end="2023-12-31", timeout=30)
- 关闭多线程下载:批量下载多只标的时,可添加
threads=False参数关闭多线程并发,避免短时间大量请求被服务端拦截:
data = yf.download(["AAPL", "MSFT", "GOOG"], start="2023-01-01", end="2023-12-31", threads=False)
内容的提问来源于stack exchange,提问作者andrelimon
相关产品推荐
相关产品推荐

