当前位置: 首页 > 知识库问答 >
问题:

python请求:post和大内容

能可人
2023-03-14

我正在使用POST请求向服务器发送CSV文件。

我正在使用一个类似文件的对象requests.post

如果CSV文件相当大,并且我的内存有限,或者我使用类似文件的对象将永远不会在内存中加载整个文件,那么会有问题吗?我对此不确定。

我知道有流选项,但听起来更像是为了获得响应而不是发送数据。

headers = {
    'content-type': 'text/csv',
}
csvfile = '/path/file.csv'
with open(csvfile) as f:
    r = requests.post(url, data=f, headers=headers)

共有2个答案

曾歌者
2023-03-14

这不会将整个文件加载到内存中,它将被分成块并一次传输一点。您可以在这里的源代码中看到这一点。

宇文勇
2023-03-14

使用打开的文件对象作为数据参数可确保请求将为您流式传输数据。

如果可以(通过操作系统文件系统)确定文件大小,则使用8kb缓冲区对文件对象进行流式传输。如果无法确定文件大小,则发送传输编码:chunked请求,改为每行发送数据(对象用作iterable)。

另一方面,如果要对多部分POST使用files=参数,则文件将在发送之前加载到内存中。使用requests toolbelt包以流式传输多部分上载:

import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder

csvfile = '/path/file.csv'
with open(csvfile) as f:
    m = MultipartEncoder(fields={'csv_field_name': ('file.csv', f, 'text/csv')})
    headers = {'Content-Type': m.content_type}
    r = requests.post(url, data=m, headers=headers)
 类似资料:
  • 本文向大家介绍python-requests POST请求,包括了python-requests POST请求的使用技巧和注意事项,需要的朋友参考一下 示例 POST请求是使用方法发出的。request.post() 如果您需要发送Web表单请求作为POST正文,请传入以键值对作为data参数的字典;requests会将它们编码为application/x-www-form-urlencoded模

  • 我正在使用嵌入Java的netty 4.1,并尝试从管道中的客户端POST请求中检索数据。我在网上找到了几种选择,但都没用。。。 也许有人对此有一个有用的想法。 向所有提供帮助的人致以问候和感谢。 管道: 处理程序:

  • 我向我的flask应用所在的服务器发出了python post请求。它运行良好,我能够获得所需的数据。 但我想用POSTMAN测试API。我无法做到这一点,因为在某种程度上我对邮递员并不熟悉。 下面是我的python代码。 我正在努力解决这样一个问题:我试图发布到服务器上的数据和文件应该是原始json还是表单数据,或者是正文的x-www-form-urlencoded部分。还有实际的结构应该是什么

  • 问题内容: 谁能给我指出发送GET和POST请求的一种很好的实现方式。他们有很多方法可以做到这些,我正在寻找最佳的实现方式。其次,有一种通用的方法可以发送这两种方法,而不是使用两种不同的方法。毕竟,GET方法仅在查询字符串中具有参数,而POST方法使用这些参数的标头。 谢谢。 问题答案: 您可以使用该类(在java.net中)发送POST或GET HTTP请求。它与可能要发送HTTP请求的任何其他

  • <?php $requestBody = array( 'lang' => 'php', 'ver' => 'any' ); $http = HttpRequest::newSession(); $response = $http->post('http://www.baidu.com/', $requestBody);

  • 问题内容: 我正在尝试使用Python访问poloniex.com(一种加密货币交易所)上的交易API。为此,我必须遵循以下规定: 所有对交易API的调用都通过HTTP POST发送到https://poloniex.com/tradingApi,并且必须包含以下标头: 密钥-您的API密钥。 签名-根据HMAC-SHA512方法,由您的键的“秘密”对查询的POST数据进行签名。 此外,所有查询都