首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >requests -如何在Requests中上传大块文件?

requests -如何在Requests中上传大块文件?
EN

Stack Overflow用户
提问于 2021-07-09 21:06:03
回答 1查看 363关注 0票数 0

我必须上传大文件(~5 5GB)。我将文件分成小块(10MB),不能一次发送所有数据(+5 5GB )(因为如果在一个请求中发送超过5 5GB的大数据,我请求的api将失败)。我上传到的api有一个规范,它需要发送至少10MB的数据。我确实使用了read(10485760),并通过请求发送它,这很好用。

但是,我不想读取内存中的所有10MB,如果我在脚本中利用多线程,那么每个线程读取10MB将占用太多内存。

有没有一种方法可以发送10MB到api请求,但一次只读取4096/8192字节,并传输到10MB,这样我就不会过度使用内存。

Pls.note我不能在请求中发送fileobj,因为这将使用较少的内存,但我将无法在10MB和整个5 go的数据将进入请求,我不想要的区块。

有没有办法通过请求。我看到httplib有它。https://github.com/python/cpython/blob/3.9/Lib/http/client.py -I将在循环中调用send(fh.read(4096)函数,直到我完成10MB,并将在不占用大量内存的情况下完成一个10MB的请求。

EN

回答 1

Stack Overflow用户

发布于 2021-07-10 00:26:38

这就是文档所说的:In the event you are posting a very large file as a multipart/form-data request, you may want to stream the request. By default, requests does not support this, but there is a separate package which does - requests-toolbelt. You should read the toolbelt’s documentation for more details about how to use it.

因此,尝试使用stream上传,如果它不能按照您的需要工作,那么使用requests-toolbelt

为了stream上传,你需要在函数调用中传递stream=True,不管它是post还是put

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68317316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档