以下代码失败大约需要30秒:
#!/usr/bin/env python2from httplib import HTTPConnectionconn = HTTPConnection('google.com', 22222, timeout=2)conn.request('GET', '')如果将ip传递给ip
HTTPConnection而不是主机名,则按预期在2秒内引发超时错误:
#!/usr/bin/env python2import socketfrom httplib import HTTPConnectionhost, port = 'google.com', 22222ip, port = socket.getaddrinfo(host, port)[0][-1]conn = HTTPConnection(ip, port, timeout=2)conn.request('GET', '')解释与ftplib中的解释相同。FTP超时具有不一致的行为:超时可能会限制单个套接字操作,但是它并没有
HTTPConnection()说明可能尝试尝试返回的多个IP地址的呼叫本身的持续时间,
getaddrinfo()并且超时仅限制了单个套接字操作。合并多个操作可能需要更长的时间。
您
HTTPConnection('http://google.com:22222')很快就会失败,因为url是错误的参数:它应该是host或
host:port。绝对值
url被
request()方法接受-
尽管即使它具有特殊含义-通常,您只需提供诸如的路径即可
'/'。



