使用requests.post(url=url, headers=headers, files=files) 这种形式传输大文件出现MemoryError 错误。解决办法:
使用扩展库requests_toolbelt
准备用HTTP 在局域网内 上传一些文件,文件一般都在1G左右
1 2 3 4
r = requests.post('****', data={'path':'2016/07/08/5ASD5SDFASDFASDF/cad.zip'}, files={'file': open(filename, 'rb')} )
这样上传小文件可以, 但是上传大文件时候会py会报 memeryError的内存错误。 如何解决此问题呢?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
from requests_toolbelt import * m = MultipartEncoder(fields={'file': ('filename',open(f, 'rb'))}, boundary='---------------------------7de1ae242c06ca' ) import time def my_callback(monitor): # Your callback function print monitor.bytes_read m = MultipartEncoderMonitor(m, my_callback) req_headers = {'Content-Type': m.content_type, 'path':'2016/07/09/5ASD5SDFASDFASDF/{}.zip'.format(time.time()),} r = requests.post(url, data=m, headers=req_headers)
用了个扩展库requests_toolbelt,可以完美解决