Requests to naprawdę fajna biblioteka. Chciałbym go użyć do pobierania dużych plików (> 1 GB). Problem polega na tym, że nie można zachować całego pliku w pamięci. Potrzebuję go odczytać w kawałkach. Jest to problem z następującym kodem
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
Z jakiegoś powodu to nie działa w ten sposób. Nadal ładuje odpowiedź do pamięci przed zapisaniem jej w pliku.
AKTUALIZACJA
Jeśli potrzebujesz małego klienta (Python 2.x / 3..x), który może pobierać duże pliki z FTP, możesz go znaleźć tutaj . Obsługuje wielowątkowość i ponowne łączenie (monitoruje połączenia), a także dostraja parametry gniazd dla zadania pobierania.