Solicitações é uma biblioteca muito boa. Gostaria de usá-lo para baixar arquivos grandes (> 1 GB). O problema é que não é possível manter o arquivo inteiro na memória, preciso lê-lo em pedaços. E este é um problema com o seguinte 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 alguma razão, não funciona dessa maneira. Ele ainda carrega a resposta na memória antes de salvá-la em um arquivo.
ATUALIZAR
Se você precisar de um cliente pequeno (Python 2.x /3.x) que possa baixar grandes arquivos do FTP, pode encontrá-lo aqui . Ele suporta multithreading e reconecta (ele monitora conexões) e também ajusta parâmetros de soquete para a tarefa de download.