Python 除处理总经理的请求外

Python 除处理总经理的请求外,python,python-3.x,Python,Python 3.x,我故意检查一个错误的url:以查看如何处理错误 除了s之外,我确实有一些,但它们似乎什么也没做 h = { 'Server': server, 'User-Agent': server + ' (Node 01)', } try: resp = requests.head("https://google55.com", headers=h) except requests.exceptions.Timeout: print ('Timeout...') ex

我故意检查一个错误的url:以查看如何处理错误

除了s之外,我确实有一些
,但它们似乎什么也没做

h = {
    'Server': server, 
    'User-Agent': server + ' (Node 01)', 
}
try:
    resp = requests.head("https://google55.com", headers=h) 
except requests.exceptions.Timeout:
    print ('Timeout...')
except requests.exceptions.TooManyRedirects:
    print ('Bad URL...')
except requests.exceptions.RequestException as e:
    print (e)
因为我得到了以下错误:

HTTPSConnectionPool(host='google55.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0xffff99595978>: Failed to establish a new connection: [Errno -2] Name or service not known',))
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/urllib3/connection.py", line 160, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw)
File "/usr/local/lib/python3.6/dist-packages/urllib3/util/connection.py", line 57, in create_connection
for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
File "/usr/lib/python3.6/socket.py", line 745, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py", line 603, in urlopen
chunked=chunked)
File "/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py", line 344, in _make_request
self._validate_conn(conn)
File "/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py", line 843, in _validate_conn
conn.connect()
File "/usr/local/lib/python3.6/dist-packages/urllib3/connection.py", line 316, in connect
conn = self._new_conn()
File "/usr/local/lib/python3.6/dist-packages/urllib3/connection.py", line 169, in _new_conn
self, "Failed to establish a new connection: %s" % e)
urllib3.exceptions.NewConnectionError: <urllib3.connection.VerifiedHTTPSConnection object at 0xffff99595978>: Failed to establish a new connection: [Errno -2] Name or service not known
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py", line 641, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/local/lib/python3.6/dist-packages/urllib3/util/retry.py", line 399, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='google55.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0xffff99595978>: Failed to establish a new connection: [Errno -2] Name or service not known',))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "uptime_test1.py", line 12, in <module>
resp = requests.head("https://google55.com", headers=h)
File "/usr/local/lib/python3.6/dist-packages/requests/api.py", line 101, in head
return request('head', url, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.6/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/requests/adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='google55.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0xffff99595978>: Failed to establish a new connection: [Errno -2] Name or service not known',))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "uptime_test1.py", line 28, in <module>
sys.exit(1)
NameError: name 'sys' is not defined
root@gateway:/var/www/default/python/uptime# 
root@gateway:/var/www/default/python/uptime# 
root@gateway:/var/www/default/python/uptime# 
root@gateway:/var/www/default/python/uptime# 
root@gateway:/var/www/default/python/uptime# 
root@gateway:/var/www/default/python/uptime# 
root@gateway:/var/www/default/python/uptime# python3 uptime_test1.py 
HTTPSConnectionPool(host='google55.com', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0xffff89210978>: Failed to establish a new connection: [Errno -2] Name or service not known',))
Status
Traceback (most recent call last):
File "uptime_test1.py", line 31, in <module>
print (resp.status_code)
NameError: name 'resp' is not defined
HTTPSConnectionPool(host='google55.com',port=443):url:/(由NewConnectionError(':无法建立新连接:[Errno-2]名称或服务未知',)导致的重试次数超过了最大值
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.6/dist-packages/urllib3/connection.py”,第160行,位于康涅狄格州新州
(self.\u dns\u主机、self.port)、self.timeout、**额外功率)
文件“/usr/local/lib/python3.6/dist packages/urllib3/util/connection.py”,第57行,在create_connection中
对于socket.getaddrinfo(主机、端口、系列、socket.SOCK\u流)中的res:
文件“/usr/lib/python3.6/socket.py”,第745行,在getaddrinfo中
对于_socket.getaddrinfo(主机、端口、系列、类型、协议、标志)中的res:
socket.gaierror:[Errno-2]名称或服务未知
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py”,urlopen中的第603行
分块=分块)
文件“/usr/local/lib/python3.6/dist packages/urllib3/connectionpool.py”,第344行,在请求中
自我验证连接(连接)
文件“/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py”,第843行,位于康涅狄格州验证区
连接
文件“/usr/local/lib/python3.6/dist-packages/urllib3/connection.py”,第316行,在connect中
conn=自我。_new_conn()
文件“/usr/local/lib/python3.6/dist-packages/urllib3/connection.py”,第169行,位于康涅狄格州新城区
self,“无法建立新连接:%s”%e)
urllib3.exceptions.NewConnectionError::未能建立新连接:[Errno-2]名称或服务未知
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.6/dist-packages/requests/adapters.py”,第449行,在send中
超时=超时
文件“/usr/local/lib/python3.6/dist packages/urllib3/connectionpool.py”,urlopen中的第641行
_stacktrace=sys.exc_info()[2])
文件“/usr/local/lib/python3.6/dist-packages/urllib3/util/retry.py”,第399行,增量
引发MaxRetryError(_池、url、错误或响应错误(原因))
urllib3.exceptions.MaxRetryError:HTTPSConnectionPool(host='google55.com',port=443):url:/(由NewConnectionError引起(':未能建立新连接:[Errno-2]名称或服务未知',))
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“uptime_test1.py”,第12行,在
resp=请求头(“https://google55.com“,页眉=h)
文件“/usr/local/lib/python3.6/dist-packages/requests/api.py”,第101行,头部
返回请求('head',url,**kwargs)
文件“/usr/local/lib/python3.6/dist-packages/requests/api.py”,请求中的第60行
return session.request(method=method,url=url,**kwargs)
文件“/usr/local/lib/python3.6/dist-packages/requests/sessions.py”,请求中的第533行
resp=自我发送(准备,**发送)
文件“/usr/local/lib/python3.6/dist-packages/requests/sessions.py”,第646行,在send中
r=适配器.send(请求,**kwargs)
文件“/usr/local/lib/python3.6/dist-packages/requests/adapters.py”,第516行,在send中
raise ConnectionError(e,请求=请求)
requests.exceptions.ConnectionError:HTTPSConnectionPool(host='google55.com',port=443):url:/(由NewConnectionError引起(':无法建立新连接:[Errno-2]名称或服务未知',))超过了最大重试次数
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“uptime_test1.py”,第28行,在
系统出口(1)
NameError:未定义名称“sys”
root@gateway:/var/www/default/python/uptime
root@gateway:/var/www/default/python/uptime
root@gateway:/var/www/default/python/uptime
root@gateway:/var/www/default/python/uptime
root@gateway:/var/www/default/python/uptime
root@gateway:/var/www/default/python/uptime
root@gateway:/var/www/default/python/uptime#python3 uptime_test1.py
HTTPSConnectionPool(host='google55.com',port=443):url:/(由NewConnectionError(':无法建立新连接:[Errno-2]名称或服务未知',)导致的重试次数超过最大值
地位
回溯(最近一次呼叫最后一次):
文件“uptime_test1.py”,第31行,在
打印(各自的状态代码)
NameError:未定义名称“resp”

需要以某种方式捕获此错误,以便脚本知道这是一个错误的URL。

如果处理的异常不正确,可以在堆栈跟踪中检查实际引发的异常,并捕获它们。跟踪中的一些异常:

urllib3.exceptions.NewConnectionError
urllib3.exceptions.MaxRetryError
requests.exceptions.ConnectionError
NameError
# ... none of which you're handling

尽管
requests.exceptions.TooManyRedirects
urllib3.exceptions.MaxRetryError
my似乎有相同的原因,但异常本身并不相同。

这是代码的相关部分:

Traceback (most recent call last):
File "uptime_test1.py", line 31, in <module>
print (resp.status_code)
NameError: name 'resp' is not defined

注意:如果您检查回溯,您可以看到更多未在代码中处理的
请求.exceptions.X
urlib3.exceptions.X
异常。

resp
未定义,因为
请求.head(“https://google55.com“,headers=h)
失败!但是我没有使用
urllib3
try:
    print (resp.status_code)
except NameError:
    print("Undefined variable")