Python – 使用FancyURLopener,sslexception – 违反协议

请参考以下代码:

from six.moves.urllib.request import FancyURLopener class ParanoidURLopener(FancyURLopener): def http_error_default(self, url, fp, errcode, errmsg, headers): raise Exception('URL fetch failure on {}: {} -- {}'.format(url, errcode, errmsg)) ParanoidURLopener().retrieve("https://s3.amazonaws.com/img-datasets/mnist.pkl.gz", "a.pkl.gz") 

我明白了

 ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:645) 

我search了一下,发现了这个问题,但它是非常老的bug,似乎是固定的(代码在这个问题对我有用)。

PS_1 :代码取自PS_2 源代码 PS_2 :这是更多的问题的点版本

EDIT_1

这些错误只发生在这个文件中。

如果我打开一个pdf文件,它完美的作品。

 >>> ParanoidURLopener().retrieve("http://anh.cs.luc.edu/python/hands-on/3.1/Hands-onPythonTutorial.pdf", "a.pdf") ('a.pdf', <http.client.HTTPMessage object at 0x7f623da36128>) 

并与此一起工作

 >>> ParanoidURLopener().retrieve("http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz", "a.gz") ('a.gz', <http.client.HTTPMessage object at 0x7f623da36860>)