流式下载大文件与python请求中断

时间:2013-11-01 12:19:00

标签: python python-requests

我在python-requests v.2.0.1

中流式下载大文件(大约1.5 GB)时遇到问题
with open("saved.rar",'wb') as file:
    r = session.get(url,stream=True,timeout=3600)
    for chunk in r.iter_content(chunk_size=1024):
        if chunk:
            file.write(chunk)
            file.flush()

我在我的vps上测试了几次,有时它下载了200mb,500mb或800mb并保存它没有任何错误。它没有达到超时,就像完成下载一样停止。

我下载此文件的主机是稳定的,因为我没有任何问题在浏览器中下载此文件。

有什么方法可以在python-requests中下载大文件并且100%确定它的整个文件?

@Edit

我用urllib解决了它,问题只出在请求上。 无论如何,谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

可能存在一些问题会导致下载中断。网络问题等。但是在开始下载之前我们知道文件大小以检查您是否已经下载了整个文件,您可以使用urllib执行此操作:

site = urllib.urlopen("http://python.org")
meta = site.info()
print meta.getheaders("Content-Length")

使用请求:

r = requests.get("http://python.org")
r.headers["Content-Length"]