Python 2.7 Python 2.7-下载大文件时遇到问题

Python 2.7 Python 2.7-下载大文件时遇到问题,python-2.7,ubuntu-16.04,urllib,Python 2.7,Ubuntu 16.04,Urllib,我想在Python 2.7中下载一些相当大的文件(在300到700 MB之间),并且我遇到了在检索文件中间的连接被重置的问题。具体地说,我使用的是urllib.urlretrieve(url,文件名),并且每隔一段时间我就会收到对等方重置的socket.error:[Errno 104]连接 现在,我对套接字和web协议的工作原理非常不熟悉,所以我尝试了以下方法,但不知道是否有帮助: response = urllib.urlopen(url) CHUNK_SIZE = 16 * 1024 wi

我想在Python 2.7中下载一些相当大的文件(在300到700 MB之间),并且我遇到了在检索文件中间的连接被重置的问题。具体地说,我使用的是
urllib.urlretrieve(url,文件名)
,并且每隔一段时间我就会收到对等方重置的
socket.error:[Errno 104]连接

现在,我对套接字和web协议的工作原理非常不熟悉,所以我尝试了以下方法,但不知道是否有帮助:

response = urllib.urlopen(url)
CHUNK_SIZE = 16 * 1024
with open(file_name, 'wb') as f:
    for chunk in iter(lambda: response.read(CHUNK_SIZE), ''):
        f.write(chunk)
编辑:我想我应该相信这段代码的作者:

我们一次只下载一点点,这听起来很合理,所以它应该“不太容易”受到这个错误104的影响,但再一次,我基本上不知道所有这些是如何工作的,所以我不知道这是否真的有什么不同

经过一点测试,它似乎工作稍微好一点?但这可能只是巧合。通常,在抛出此错误之前,我可以下载一个或两个文件


为什么我会犯错误104,我该如何预防呢?出于好奇,我是否应该使用
urllib2
而不是
urllib

我在使用Unix套接字时遇到了同样的错误,我已经将其归结为
iter
的使用。如果我摆脱了iter,那么它会突然起作用。我的另一端似乎在读取所有数据后立即关闭连接。与国际热核实验堆无关。。。