调用自建Flask-RESTful API出现urllib3 NewConnectionError报错如何解决
问题根因
你遇到的报错本质是域名解析失败,和接口限流、连接复用没有任何关系。报错栈最底层的socket.gaierror: [Errno -2] Name or service not known已经明确说明:请求发起端的机器无法将data-collector.cloud这个域名解析为对应的IP地址,请求还没到你的API服务层就已经失败了。
你之前配置的接口限流规则、请求重试逻辑都没有触及核心问题,重试只会在解析失败的前提下反复触发相同报错,不会解决域名解析本身的问题。
排查点
- 先在发起请求的Flask应用所在的机器上执行DNS解析验证,运行命令:
如果这一步就返回解析失败的结果,说明是机器的DNS配置问题,和你的Flask代码完全无关。nslookup data-collector.cloud # 或者 ping data-collector.cloud - 确认你的flask-restful API服务是否真的绑定了
data-collector.cloud这个公网域名:有没有完成域名备案、DNS解析记录配置,解析记录指向的IP是否为你部署API服务的服务器公网IP。 - 如果两个应用都部署在本地/内网环境没有配置公网域名,直接把请求URL里的域名替换为API服务所在机器的IP地址测试:比如API服务部署在同局域网的
192.168.1.100机器、端口为5000,就把请求URL改为http://192.168.1.100:5000/sample_url测试。 - 检查请求发起端机器的hosts文件配置:Linux系统路径为
/etc/hosts,Windows系统路径为C:\Windows\System32\drivers\etc\hosts,确认有没有手动配置过data-collector.cloud的错误IP映射记录。 - 如果是容器化部署(Docker/K8s等),确认两个应用是否在同一个网络命名空间下,跨容器/跨服务访问的话有没有配置正确的内部服务发现、内网域名解析规则,不要直接用公网域名访问同集群内的服务。
内容的提问来源于stack exchange,提问作者Wouter
相关产品推荐
相关产品推荐

