Python httplib2处理异常

Bha*_*nan 5 python httplib2

我有这个非常简单的代码来检查网站是上升还是下降.

import httplib2
h = httplib2.Http()
response, content = h.request("http://www.folksdhhkjd.com")
if response.status == 200:
    print "Site is Up"
else:
    print "Site is down"
Run Code Online (Sandbox Code Playgroud)

当我输入有效的URL时,它会正确打印Site is Up,因为状态是预期的200.但是,当我输入无效的网址时,是否应该打印网站已关闭?相反,它会打印出类似这样的异常

Traceback (most recent call last):
  File "C:\Documents and Settings\kripya\Desktop\1.py", line 3, in <module>
    response, content = h.request("http://www.folksdhhkjd.com")
  File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1436, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
  File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1188, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1129, in _conn_request
    raise ServerNotFoundError("Unable to find the server at %s" % conn.host)
ServerNotFoundError: Unable to find the server at www.folksdhhkjd.com
Run Code Online (Sandbox Code Playgroud)

如何覆盖此异常并打印我的自定义"站点已关闭"消息?有什么指导吗?

编辑

还有一个问题......使用之间有什么区别

h = httplib2.Http('.cache')   
Run Code Online (Sandbox Code Playgroud)

h = httplib2.Http()   
Run Code Online (Sandbox Code Playgroud)

jlm*_*ald 7

try:
    response, content = h.request("http://www.folksdhhkjd.com")
    if response.status==200:
        print "Site is Up"
except httplib2.ServerNotFoundError:
    print "Site is Down"
Run Code Online (Sandbox Code Playgroud)

您的代码的问题是,如果主机没有响应,请求不会返回任何状态代码,因此库会抛出错误(我认为这是库本身的特性,在执行某种DNS解析之前试图提出要求).