【问题标题】:What does this Python requests error mean?这个 Python 请求错误是什么意思?
【发布时间】:2013-03-08 03:37:55
【问题描述】:

这个 Python 请求错误是什么意思?这是否意味着它尝试连接到服务器并且无法连接? [Errno 8] nodename nor servname provided, or not known 是什么意思?

文件“python2.7/site-packages/requests/api.py”,第 55 行,在获取中

文件“python2.7/site-packages/requests/api.py”,第 44 行,在请求中

文件“python2.7/site-packages/requests/sessions.py”,第 279 行,在 请求

文件“python2.7/site-packages/requests/sessions.py”,第 374 行,在 发送

文件“python2.7/site-packages/requests/adapters.py”,第 209 行,在 发送

ConnectionError: HTTPConnectionPool(host='localhost', port=8091): Max url 超出重试次数:/pools/default (由:[Errno 8] 节点名或服务名提供,或未提供 已知

代码生成了这个: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 客户端生成的。

【问题讨论】:

  • 你能粘贴一些触发它的周围代码吗?

标签: python couchbase


【解决方案1】:

这意味着您尝试访问的主机名的 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"] 的值并确保其设置正确。

【讨论】:

    【解决方案2】:

    为将来遇到这种情况的人添加我自己的经验。

    事实证明,这实际上是因为我已达到系统上打开文件的最大数量。它与失败的连接无关,甚至与所示的 DNS 错误无关。

    【讨论】:

    • 你是如何解决这个问题的?我想我遇到了同样的问题。
    • 老实说,我不记得了。我可能会在谷歌上搜索“增加打开文件 linux 的数量”之类的内容,然后按照这些指示进行操作。
    【解决方案3】:

    不正确的 DNS,例如使用 docker 服务并调用 http://host.docker.internal:8000 而不是 http://localhost:8000 当您不在 docker 服务本身时。

    【讨论】:

      【解决方案4】:

      如果您在这里是因为 twitter api 给出了这个错误,请尝试重新生成您的 不记名令牌,它将正常工作。

      【讨论】:

        【解决方案5】:

        我在尝试连接到 .onion 网站时遇到了这个错误,结果我所要做的就是在我的 socks 代理名称前加上“h”,如下所示:

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

        这可能不是您的解决方案,但我发布此答案以防万一遇到与我相同问题的人在这里寻找解决方案

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-29
          • 2011-03-01
          相关资源
          最近更新 更多