2017-09-28 87 views
1

我需要發送文件發送請求。我的代碼是:如何發送大文件到python中發佈請求

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

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


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

它適用於小文件。但是如果我嘗試上傳一個大文件(例如* .avi> 1gb),我就會得到一個MemoryError。我該怎麼辦?

+0

我會嘗試[到文件流媒體成塊(HTTP://docs.python-requests。組織/ EN /主/用戶/高級/#流的上載) – Wondercricket

回答

0

如果你看一下在requested/models.py中_encode_files的定義,你會發現讀取方法在文件上被調用來無條件地讀取整個文件到內存中。 因此,該文件必須適合內存。 實際限制取決於您的可用虛擬內存。在64位系統上,您可以通過分配swap或頁面文件來使其變得非常大。 可以幾乎肯定使用像aiohttp模塊和自己的文件(或PUT方法)的編碼來發送大文件