Demandes est une très belle bibliothèque. J'aimerais l'utiliser pour télécharger de gros fichiers (>1GB). Le problème est qu'il n'est pas possible de garder tout le fichier en mémoire ; je dois le lire par morceaux. Et c'est un problème avec le code suivant :
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
Pour une raison quelconque, cela ne fonctionne pas de cette façon : il charge toujours la réponse en mémoire avant de l'enregistrer dans un fichier.
UPDATE
Si vous avez besoin d'un petit client (Python 2.x /3.x) qui peut télécharger de gros fichiers à partir de FTP, vous pouvez le trouver aquí . Il prend en charge le multithreading et les reconnexions (il surveille les connexions) et règle les paramètres des sockets pour la tâche de téléchargement.