如何在python中发送大文件发布请求

时间:2017-09-28 19:23:34

标签: python python-3.x

我需要在邮寄请求中发送文件。我的代码是:

import requests
data = {"username": user,
        "password": password,}

files = {'media': open(file_path, 'rb')}


r = requests.post(url, data=data, files = files)

它适用于小文件。但是如果我尝试上传一个大文件(例如* .avi> 1gb),我会得到一个MemoryError。我该怎么办?

1 个答案:

答案 0 :(得分:0)

如果你看看requests / models.py中_encode_files的定义,你会发现在文件上调用了read方法,无条件地将整个文件读入内存。 因此,该文件必须适合内存。 实际限制取决于您的可用虚拟内存。在64位系统上,您可以通过分配交换或页面文件使其非常大。 您几乎可以肯定使用像aiohttp这样的模块和您自己的文件编码(或PUT方法)来发送更大的文件