2

我试图为我的情况找到正确的答案,但似乎它可能还不存在。

在我目前的培训课程(非常初学者级别)中,我有一个练习可以从 url 获取一些天气 json 信息(在这种情况下是开放天气)。目前,这是我被教导这样做的唯一方法:

url = "http://api.openweathermap.org/data/2.5/weather?q="+city+"&appid="+api_key

request = requests.get(url)
json = request.json()
print(json)

我按照说明设置了“city”和“api_key”参数,并且在连接到我的个人家庭网络时能够成功运行我的代码并获取 json 信息。然而,当我在办公室或通过 VPN 连接到我的工作网络时,我得到了这堵神奇的墙:


Traceback (most recent call last):   File
"C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connection.py",
line 169, in _new_conn
    conn = connection.create_connection(   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\util\connection.py",
line 96, in create_connection
    raise err   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\util\connection.py",
line 86, in create_connection
    sock.connect(sa) TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond
after a period of time, or established connection failed because
connected host has failed to respond

During handling of the above exception, another exception occurred:

Traceback (most recent call last):   File
"C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connectionpool.py",
line 699, in urlopen
    httplib_response = self._make_request(   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connectionpool.py",
line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connection.py",
line 234, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)   File
"C:\Users\*REDACTED*\Python\Python39\lib\http\client.py", line 1257,
in request
    self._send_request(method, url, body, headers, encode_chunked)   File "C:\Users\*REDACTED*\Python\Python39\lib\http\client.py", line
1303, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)   File "C:\Users\*REDACTED*\Python\Python39\lib\http\client.py", line 1252,
in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)   File "C:\Users\*REDACTED*\Python\Python39\lib\http\client.py", line
1012, in _send_output
    self.send(msg)   File "C:\Users\*REDACTED*\Python\Python39\lib\http\client.py", line 952, in
send
    self.connect()   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connection.py",
line 200, in connect
    conn = self._new_conn()   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connection.py",
line 181, in _new_conn
    raise NewConnectionError( urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x00000255A4B11370>:
Failed to establish a new connection: [WinError 10060] A connection
attempt failed because the connected party did not properly respond
after a period of time, or established connection failed because
connected host has failed to respond

During handling of the above exception, another exception occurred:

Traceback (most recent call last):   File
"C:\Users\*REDACTED*\Python\Python39\lib\site-packages\requests-2.26.0-py3.9.egg\requests\adapters.py",
line 439, in send
    resp = conn.urlopen(   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connectionpool.py",
line 755, in urlopen
    retries = retries.increment(   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\util\retry.py",
line 574, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError:
HTTPConnectionPool(host='api.openweathermap.org', port=80): Max
retries exceeded with url:
/data/2.5/weather?q=*REDACTED*&appid=*REDACTED* (Caused by
NewConnectionError('<urllib3.connection.HTTPConnection object at
0x00000255A4B11370>: Failed to establish a new connection: [WinError
10060] A connection attempt failed because the connected party did not
properly respond after a period of time, or established connection
failed because connected host has failed to respond'))        

During handling of the above exception, another exception occurred:

Traceback (most recent call last):   File
"c:\Users\*REDACTED*\Training\Code\Python\weather.py", line 7, in
<module>
    request = requests.get(url)   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\requests-2.26.0-py3.9.egg\requests\api.py",
line 75, in get
    return request('get', url, params=params, **kwargs)
    return session.request(method=method, url=url, **kwargs)   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\requests-2.26.0-py3.9.egg\requests\sessions.py",
line 542, in request
    resp = self.send(prep, **send_kwargs)   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\requests-2.26.0-py3.9.egg\requests\sessions.py",
line 655, in send
    r = adapter.send(request, **kwargs)   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\requests-2.26.0-py3.9.egg\requests\adapters.py",
line 516, in send
    raise ConnectionError(e, request=request) requests.exceptions.ConnectionError:
HTTPConnectionPool(host='api.openweathermap.org', port=80): Max
retries exceeded with url:
/data/2.5/weather?q=*REDACTED*&appid=*REDACTED* (Caused by
NewConnectionError('<urllib3.connection.HTTPConnection object at
0x00000255A4B11370>: Failed to establish a new connection: [WinError
10060] A connection attempt failed because the connected party did not
properly respond after a period of time, or established connection
failed because connected host has failed to respond'))      PS
C:\Users\*REDACTED*\Training\Code\Python&
C:/Users/*REDACTED*/Python/Python39/python.exe
"c:/Users/*REDACTED*/Training/Code/Python/weather.py" Traceback (most
recent call last):   File
"C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connection.py",
line 169, in _new_conn
    conn = connection.create_connection(   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\util\connection.py",
line 96, in create_connection
    raise err   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\util\connection.py",
line 86, in create_connection
    sock.connect(sa) TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond
after a period of time, or established connection failed because
connected host has failed to respond

During handling of the above exception, another exception occurred:

Traceback (most recent call last):   File
"C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connectionpool.py",
line 699, in urlopen
    httplib_response = self._make_request(   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connectionpool.py",
line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connection.py",
line 234, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)   File
"C:\Users\*REDACTED*\Python\Python39\lib\http\client.py", line 1257,
in request
    self._send_request(method, url, body, headers, encode_chunked)   File "C:\Users\*REDACTED*\Python\Python39\lib\http\client.py", line
1303, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)   File "C:\Users\*REDACTED*\Python\Python39\lib\http\client.py", line 1252,
in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)   File "C:\Users\*REDACTED*\Python\Python39\lib\http\client.py", line
1012, in _send_output
    self.send(msg)   File "C:\Users\*REDACTED*\Python\Python39\lib\http\client.py", line 952, in
send
    self.connect()   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connection.py",
line 200, in connect
    conn = self._new_conn()   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connection.py",
line 181, in _new_conn
    raise NewConnectionError( urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x00000229035A1370>:
Failed to establish a new connection: [WinError 10060] A connection
attempt failed because the connected party did not properly respond
after a period of time, or established connection failed because
connected host has failed to respond

During handling of the above exception, another exception occurred:

Traceback (most recent call last):   File
"C:\Users\*REDACTED*\Python\Python39\lib\site-packages\requests-2.26.0-py3.9.egg\requests\adapters.py",
line 439, in send
    resp = conn.urlopen(   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\connectionpool.py",
line 755, in urlopen
    retries = retries.increment(   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\urllib3\util\retry.py",
line 574, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError:
HTTPConnectionPool(host='api.openweathermap.org', port=80): Max
retries exceeded with url:
/data/2.5/weather?q=*REDACTED*&appid=*REDACTED* (Caused by
NewConnectionError('<urllib3.connection.HTTPConnection object at
0x00000229035A1370>: Failed to establish a new connection: [WinError
10060] A connection attempt failed because the connected party did not
properly respond after a period of time, or established connection
failed because connected host has failed to respond'))        

During handling of the above exception, another exception occurred:

Traceback (most recent call last):   File
"c:\Users\*REDACTED*\Training\Code\Python\weather.py", line 7, in
<module>
    request = requests.get(url)   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\requests-2.26.0-py3.9.egg\requests\api.py",
line 75, in get
    return request('get', url, params=params, **kwargs)   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\requests-2.26.0-py3.9.egg\requests\api.py",
line 61, in request
    return session.request(method=method, url=url, **kwargs)   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\requests-2.26.0-py3.9.egg\requests\sessions.py",
line 542, in request
    resp = self.send(prep, **send_kwargs)   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\requests-2.26.0-py3.9.egg\requests\sessions.py",
line 655, in send
    r = adapter.send(request, **kwargs)   File "C:\Users\*REDACTED*\Python\Python39\lib\site-packages\requests-2.26.0-py3.9.egg\requests\adapters.py",
line 516, in send
    raise ConnectionError(e, request=request) requests.exceptions.ConnectionError:
HTTPConnectionPool(host='api.openweathermap.org', port=80): Max
retries exceeded with url:
/data/2.5/weather?q=*REDACTED*&appid=*REDACTED* (Caused by
NewConnectionError('<urllib3.connection.HTTPConnection object at
0x00000229035A1370>: Failed to establish a new connection: [WinError
10060] A connection attempt failed because the connected party did not
properly respond after a period of time, or established connection
failed because connected host has failed to respond'))

事实/采取的行动的快速参考:-尝试通过命令将代理全局设置为所有 Python 实例set proxy...。- 不使用venv. --proxy...-在通过 Visual Studio Code 终端执行之前,尝试在命令末尾添加参数。- 在 Windows 10 企业版上。

我无法转到课程的下一个模块,因为我需要此代码才能工作,以便我知道如何在我必须做的下一组代码中修复错误。如果有很多话要说,我也很抱歉(我想我是一个菜鸟是有原因的),但我真的很感谢任何可以指导我的人。

4

2 回答 2

0

对于以自己的方式设置的请求代理请求中的代理

于 2021-08-17T17:59:39.440 回答
0

感谢一位同事的帮助,我能够更好地解释Сергей Зайков引用的链接。毕竟这是一个代理问题。

在对代码进行调整后,我可以通过添加下面的行并更新request.get

http_proxy = "http://*REDACTED*:8080"

proxyDict = {"http" : http_proxy}

request = requests.get(url, proxies=proxyDict)

我现在能够按预期运行我的代码。

于 2021-08-18T18:54:16.313 回答