首页 > 解决方案 > 我的 Python 获取请求中是否有 Eclipse Pydev 设置或某些东西阻止我与主机连接?

问题描述

我正在尝试使用 Python 3.5.3 从 PyDev Eclipse 3.8.1 环境中的 ESA 服务器读取数据。此处给出了产品链接的示例:

" https://scihub.copernicus.eu/dhus/odata/v1/Products('c7208694-dedb-4f47-96c0-c8fb03512ff5')

您将需要身份验证凭据才能访问该网站。

在我的 Eclipse 环境中,我通过转到 Windows-> 常规 -> 网络连接手动添加了代理设置。代理不需要身份验证。

为了获取网页的内容,我使用 Python 获取请求来发送我的查询,如下所示:

url = r"https://scihub.copernicus.eu/dhus/odata/v1/Products('c5dc59f0-b041-4f76-a685-49be63491270')"

r = requests.get(url, verify=False, proxies=proxies, auth=auth)

我需要verify=False禁用证书检查,并且proxies是一个存储代理地址和相关端口的字典。提供服务器凭据,auth其中包含用户名和密码的元组。

当我将请求发送到服务器时,我收到以下错误:

Traceback (most recent call last):
  File "/lib/python3.5/site-packages/urllib3/connection.py", line 159, in _new_conn
    (self._dns_host, self.port), self.timeout, **extra_kw)
  File "/lib/python3.5/site-packages/urllib3/util/connection.py", line 80, in create_connection
    raise err
  File "/lib/python3.5/site-packages/urllib3/util/connection.py", line 70, in create_connection
    sock.connect(sa)
TimeoutError: [Errno 110] Connection timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/lib/python3.5/site-packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/lib/python3.5/site-packages/urllib3/connectionpool.py", line 343, in _make_request
    self._validate_conn(conn)
  File "/lib/python3.5/site-packages/urllib3/connectionpool.py", line 839, in _validate_conn
    conn.connect()
  File "/lib/python3.5/site-packages/urllib3/connection.py", line 301, in connect
    conn = self._new_conn()
  File "/lib/python3.5/site-packages/urllib3/connection.py", line 168, in _new_conn
    self, "Failed to establish a new connection: %s" % e)
urllib3.exceptions.NewConnectionError: <urllib3.connection.VerifiedHTTPSConnection object at 0x7fecf00acbe0>: Failed to establish a new connection: [Errno 110] Connection timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/lib/python3.5/site-packages/requests/adapters.py", line 449, in send
    timeout=timeout
  File "/lib/python3.5/site-packages/urllib3/connectionpool.py", line 638, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/lib/python3.5/site-packages/urllib3/util/retry.py", line 398, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='scihub.copernicus.eu', port=443): Max retries exceeded with url: /dhus/odata/v1/Products('c5dc59f0-b041-4f76-a685-49be63491270') (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7fecf00acbe0>: Failed to establish a new connection: [Errno 110] Connection timed out',))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "download_lib2/download_lib/scihub/download.py", line 325, in <module>
    download_url(dl_link, auth, temp_dir)
  File "download_lib2/download_lib/scihub/download.py", line 153, in download_url
    online = check_url_online(url_to_download, auth)
  File "download_lib2/download_lib/scihub/download.py", line 51, in check_url_online
    r = requests.get(url, verify=False, proxies=proxies, auth=auth)
  File "/lib/python3.5/site-packages/requests/api.py", line 75, in get
    return request('get', url, params=params, **kwargs)
  File "/lib/python3.5/site-packages/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "/lib/python3.5/site-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/lib/python3.5/site-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/lib/python3.5/site-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='scihub.copernicus.eu', port=443): Max retries exceeded with url: /dhus/odata/v1/Products('c5dc59f0-b041-4f76-a685-49be63491270') (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7fecf00acbe0>: Failed to establish a new connection: [Errno 110] Connection timed out',))

我在 Eclipse 之外的 IDLE 中尝试了相同的请求,并且能够成功连接并读取内容。我当前的 Eclipse/PyDev 环境是否有问题,不允许我发送获取请求?

为什么 Python 无法连接?我可以使用 Eclipse 中的其他项目(例如https://podaac-opendap.jpl.nasa.gov/opendap/allData/oscar/preview/L4/oscar_third_deg/)向这个网站和其他网站发送获取请求,没有任何问题.

编辑:在版本中添加

标签: python-3.xeclipsepython-requestspydev

解决方案


socks超时表明您的问题实际上是与您的代理的连接,而不是 ESA 服务器。此外,我相信 Eclipse 中的代理设置仅用于插件/软件更新,而不用于您编写的任何代码。

作为第一步,检查您的代理字典键是否正确,如果可以,请验证您的代理 URL。

您提到您有其他可以访问 Internet 的 Eclipse 项目;值得检查他们实施的代理设置,看看是否与您当前的设置有任何差异。


推荐阅读