如何解决Python调用API时的“Max Retries exceeded with URL”错误?
解决"Max Retries exceeded with URL"(NameResolutionError: getaddrinfo failed)问题
报错核心是域名解析失败,无法找到api.finnhub.io对应的IP地址,和API密钥、代码逻辑、依赖包无关,直接从网络层面排查:
先验证域名连通性
打开命令行执行以下命令,确认是否能解析域名:# Windows/Linux/macOS通用 ping api.finnhub.io # 或更精准的域名解析测试 nslookup api.finnhub.io如果返回"无法找到主机"或类似提示,说明DNS解析存在问题。
更换公共DNS服务器
把本地DNS换成公共服务,比如:- 谷歌DNS:8.8.8.8 / 8.8.4.4
- 国内公共DNS:114.114.114.114
操作方式: - Windows:设置→网络和Internet→WLAN/以太网→更改适配器选项→右键属性→Internet协议版本4(TCP/IPv4)→手动设置DNS
- Linux/macOS:修改
/etc/resolv.conf添加nameserver 8.8.8.8,或通过系统网络设置修改
检查hosts文件是否被篡改
打开hosts文件,确认没有错误绑定api.finnhub.io的条目:- Windows路径:
C:\Windows\System32\drivers\etc\hosts - Linux/macOS路径:
/etc/hosts
如果有api.finnhub.io相关行,直接删除或用#注释掉
- Windows路径:
排查代理/防火墙拦截
- 关闭系统代理、VPN工具,暂时禁用防火墙,再测试API请求
- 如果必须使用代理,确保requests正确配置代理参数:
import requests proxies = { "http": "http://your-proxy-address:port", "https": "https://your-proxy-address:port" } # 替换成你的API请求URL response = requests.get("https://api.finnhub.io/api/v1/...", proxies=proxies)
切换网络环境验证
连接手机热点等其他网络,如果请求成功,说明当前网络(学校/公司)屏蔽了该域名,需要联系网络管理员解决
内容的提问来源于stack exchange,提问作者Kalebe Szlachta
相关产品推荐
相关产品推荐

