这个Python requests错误是什么意思?

18 投票
5 回答
34545 浏览
提问于 2025-04-17 18:22

这个Python的requests错误是什么意思呢?是不是说它尝试连接服务器但没成功?[Errno 8] nodename nor servname provided, or not known又是什么意思呢?

在"python2.7/site-packages/requests/api.py"的第55行,调用了get方法。

在"python2.7/site-packages/requests/api.py"的第44行,调用了request方法。

在"python2.7/site-packages/requests/sessions.py"的第279行,调用了request方法。

在"python2.7/site-packages/requests/sessions.py"的第374行,调用了send方法。

在"python2.7/site-packages/requests/adapters.py"的第209行,调用了send方法。

出现了连接错误:HTTPConnectionPool(主机='localhost',端口=8091):最大重试次数超过,网址:/pools/default(原因是:[Errno 8] nodename nor servname provided, or not known)

这段代码生成了这个错误:http://github.com...

class RestConnection(object):
    def __init__(self, serverInfo):
        #serverInfo can be a json object
        if isinstance(serverInfo, dict):
            self.ip = serverInfo["ip"]
            self.username = serverInfo["username"]
            self.password = serverInfo["password"]
            self.port = serverInfo["port"]
            self.couch_api_base = serverInfo.get("couchApiBase")
        else:
            self.ip = serverInfo.ip
            self.username = serverInfo.rest_username
            self.password = serverInfo.rest_password
            self.port = serverInfo.port
            self.couch_api_base = None

        self.base_url = "http://{0}:{1}".format(self.ip, self.port)
        server_config_uri = ''.join([self.base_url, '/pools/default'])
        self.config = requests.get(server_config_uri).json()
        # if couchApiBase is not set earlier, let's look it up
        if self.couch_api_base is None:
            #couchApiBase is not in node config before Couchbase Server 2.0
            self.couch_api_base = self.config["nodes"][0].get("couchApiBase")

顺便说一下,这个错误是由Couchbase的Python客户端生成的。

5 个回答

1

我在尝试连接.onion网站时遇到了这个错误,结果发现我只需要在我的socks代理名称前加个“h”,像这样:

proxies = {
    'http':  'socks5h://127.0.0.1:9050',
    'https': 'socks5h://127.0.0.1:9050'
    }

这可能不是你的解决办法,但我发这个回答是为了防止有和我一样问题的人来这里寻找解决方案。

9

这意味着你想访问的主机名的DNS查找失败了。举个例子,如果我尝试查找一个无效的主机名,我也会遇到同样的错误:

>>> import requests
>>> requests.get('http://apsoapsodjaopisjdaoij.com')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/api.py", line 65, in get
    return request('get', url, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/safe_mode.py", line 39, in wrapped
    return function(method, url, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/api.py", line 51, in request
    return session.request(method=method, url=url, **kwargs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/sessions.py", line 241, in request
    r.send(prefetch=prefetch)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/models.py", line 631, in send
    raise ConnectionError(sockerr)
requests.exceptions.ConnectionError: [Errno 8] nodename nor servname provided, or not known

检查一下 serverInfo["ip"] 的值,确保它设置正确。

11

我想分享一下我的经历,给将来遇到这个问题的人一些参考。

其实,这个问题是因为我系统上打开的文件数量达到了最大限制。跟连接失败或者DNS错误没有关系,完全是因为文件太多了。

撰写回答