urllib2.URLError:握手失败

Posted

技术标签:

【中文标题】urllib2.URLError:握手失败【英文标题】:urllib2.URLError: handshake failure 【发布时间】:2013-11-18 02:25:22 【问题描述】:

我正在对我们的数据库服务执行一个大循环的 http 请求。一切正常,但是每当我运行它时,在(看似随机的)成功查询数之后,我都会收到以下错误:urllib2.URLError: <urlopen error [Errno 1] _ssl.c:504: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure>

我正在使用 python,使用 urllib2 发送请求,使用 urllib 对我的 URL 中的一些内容进行编码,仅此而已。就像我说的,它看起来完全随机。我刚刚运行它,但在 6 个请求后它失败了。前一次,它在 49 次成功尝试后崩溃。以前有人遇到过这个问题吗?

谢谢

【问题讨论】:

Intermittent "sslv3 alert handshake failure" under Python的可能重复 【参考方案1】:

它更关心网络而不是你的代码。

我建议你可以使用 requests 模块,在模块内重试。

或者您可以在代码中添加一些重试。

例如,你可以这样写:

for i in range(reties):
    try:
       resp = xx.get(url)
       result = resp.get_result
    except (ConnectionError, SocketError or whatever else):
       pass
else:
    arise Exception('Retry Error')

【讨论】:

【参考方案2】:

说真的,如果您不限于核心软件包,您应该尝试Python Requests 而不是urllib2

【讨论】:

【参考方案3】:

Stan 我认为 Scrapy 速度更快,可以处理所有类型的连接错误。

Eric 我建议你查看scrapy 你会被它的速度和功能所惊叹

咸鱼

【讨论】:

以上是关于urllib2.URLError:握手失败的主要内容,如果未能解决你的问题,请参考以下文章

python爬虫_urllib2:urlerror和httperror

python爬虫_urllib2:urlerror和httperror

urllib2.URLError: <urlopen 错误 [Errno 8]

urllib2.URLError: <urlopen 错误 [Errno 32] Broken pipe - Google Leads

urllib2.URLError: <urlopen error [Errno 1] _ssl.c:510: error:14077410:SSL routines:SSL23_GET_SERV

执行buildman --fetch-arch arm提示"urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAIL