Python Requests HTTP连接池和最大重试次数超出限制
在一个Linux集群上,我遇到了这个错误,使用的是Requests库:
ConnectionError: HTTPConnectionPool(host='andes-1-47', port=8181): 最大重试次数超过,网址是:/jammy/api/v1(原因是:'')
这个错误是什么意思?是Requests库的问题,还是主机的问题?该怎么解决呢?
顺便说一下,这个程序在Windows和Linux的独立机器上使用localhost时运行得很好。
2 个回答
2
在调用 urlopen
时,可以试着把 retries
设置为 False
或者 1
,看看有什么不同。默认值是 3
,这个设置听起来还挺合理的。
13
关于 Max retries exceeded with url: ...
这个错误,可能会让人感到很困惑。根据你提到的在本地(localhost)可以正常工作,这很可能是你在某个地方部署的应用程序。这也解释了为什么主机名是 andes-1-47
,而不是大家通常会期待的那种(比如 example.com
)。我猜测你需要使用 andes-1-47
的IP地址(例如 192.168.0.255
),或者你的Linux集群不知道怎么解析 andes-1-47
,你应该把它添加到你的 /etc/hosts
文件中(也就是说,添加这一行: 192.168.0.255 andes-1-47
)。
如果你想检查一下你的Linux集群能否解析这个名字,可以使用这个脚本:
import socket
socket.create_connection(('andes-1-47', 8181), timeout=2)
如果无法解析主机名,这个脚本会在2秒后超时。(你可以去掉超时设置,但那样可能需要更长时间才能确定主机名是否可达。)