如何解决在下载带有请求的大文件时遇到问题?
我正在尝试使用API下载视频文件,等效的curl命令可以正常工作,对于小视频,下面的python代码可以正常工作>
with requests.get("http://username:password@url/Download/",data=data,stream=True) as r:
r.raise_for_status()
with open("deliverables/video_output34.mp4","wb") as f:
for chunk in r.iter_content(chunk_size=1024):
f.write(chunk)
对于大型视频失败(对于视频〜34M失败)(等效的curl命令对此视频有效)
Traceback (most recent call last):
File "/home/nabil/.local/lib/python3.7/site-packages/requests/adapters.py",line 479,in send
r = low_conn.getresponse(buffering=True)
TypeError: getresponse() got an unexpected keyword argument 'buffering'
During handling of the above exception,another exception occurred:
Traceback (most recent call last):
File "/home/nabil/.local/lib/python3.7/site-packages/requests/adapters.py",line 482,in send
r = low_conn.getresponse()
File "/usr/local/lib/python3.7/http/client.py",line 1321,in getresponse
response.begin()
File "/usr/local/lib/python3.7/http/client.py",line 296,in begin
version,status,reason = self._read_status()
File "/usr/local/lib/python3.7/http/client.py",line 265,in _read_status
raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response
During handling of the above exception,another exception occurred:
Traceback (most recent call last):
File "<stdin>",line 1,in <module>
File "/home/nabil/.local/lib/python3.7/site-packages/requests/api.py",line 75,in get
return request('get',url,params=params,**kwargs)
File "/home/nabil/.local/lib/python3.7/site-packages/requests/api.py",line 60,in request
return session.request(method=method,url=url,**kwargs)
File "/home/nabil/.local/lib/python3.7/site-packages/requests/sessions.py",line 533,in request
resp = self.send(prep,**send_kwargs)
File "/home/nabil/.local/lib/python3.7/site-packages/requests/sessions.py",line 646,in send
r = adapter.send(request,**kwargs)
File "/home/nabil/.local/lib/python3.7/site-packages/requests/adapters.py",line 498,in send
raise ConnectionError(err,request=request)
requests.exceptions.ConnectionError: Remote end closed connection without response
我检查了类似following的链接,但未成功
解决方法
感谢IRC#python上的SilentGhost,他指出this表示我应该升级我的请求,从而解决了这个问题(从2.22.0到2.24.0)。
升级软件包的步骤如下:
pip install requests --upgrade
可以帮助其他人解决此问题的另一个来源是使用pycurl,这是一个很好的起点:https://github.com/rajatkhanduja/PyCurl-Downloader
或/并且您可以在curl命令中使用--libcurl以获取有关如何使用pycurl的良好指示
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。