Requests es una biblioteca realmente bonita. Me gustaría usarlo para descargar archivos grandes (> 1 GB). El problema es que no es posible mantener todo el archivo en la memoria. Necesito leerlo en fragmentos. Y este es un problema con el siguiente código
import requests
def DownloadFile(url)
local_filename = url.split('/')[-1]
r = requests.get(url)
f = open(local_filename, 'wb')
for chunk in r.iter_content(chunk_size=512 * 1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
f.close()
return
Por alguna razón no funciona de esta manera. Todavía carga la respuesta en la memoria antes de guardarla en un archivo.
ACTUALIZAR
Si necesita un cliente pequeño (Python 2.x /3.x) que puede descargar archivos grandes desde FTP, puede encontrarlo aquí . Admite subprocesos múltiples y reconexiones (supervisa las conexiones) y también ajusta los parámetros de socket para la tarea de descarga.