8
votes

Téléchargez de gros fichiers via FTP avec Python

im essayant de télécharger quotidiennement un fichier de sauvegarde de mon serveur sur mon serveur de stockage local, mais j'ai eu des problèmes.

J'ai écrit ce code (supprimé les parties inutiles, comme la fonction de messagerie): < Pré> xxx

et je l'exécute avec un crontab comme: xxx

Il fonctionne avec de petits fichiers, mais avec les fichiers de sauvegarde (environ 1,7 Go) Il gèle, le fichier téléchargé obtient environ 1,2 Go puis ne grandit jamais (j'ai attendu environ une journée), et le fichier journal est vide.

aucune idée?

PS: im en utilisant Python 2.6.5


1 commentaires

Pour résoudre encore le problème, vous pouvez peut-être utiliser l'argument Callback à partir de ftp.retrbinary pour recueillir plus d'informations sur la progression de téléchargement. En outre, la lecture avec maxblockSize pourrait révéler un problème de réseautage.


3 Réponses :


2
votes

Vous pouvez essayer de définir le délai d'attente. Du DOCS :

# timeout in seconds
link = FTP(host=ftp_host, user=ftp_user, passwd=ftp_pass, acct='', timeout=3600)


0 commentaires

10
votes

Désolé si je réponds à ma propre question, mais j'ai trouvé la solution.

J'ai essayé FTPPOUPL sans succès, alors j'ai essayé de nombreuses méthodes et enfin, cela fonctionne: P>

01-12-2011 23.30 - Connected to FTP
01-12-2011 23.30 while > try, run retrbinary
02-12-2011 00.31 while > except, something going wrong: timed out
    file lenght is: 1754695793 > 1754695793
02-12-2011 00.31 - Connected to FTP
Done with file, attempt to download m5dsum


0 commentaires

3
votes

J'ai implémenté le code avec FTPLIB qui peut surveiller la connexion, la reconnexion et le fichier de téléchargement de la chargement de téléchargement en cas de défaillance. Détails ici: Comment télécharger Big File en Python via FTP (avec surveillance et reconnexion)?


1 commentaires

@Roman J'utilise votre script, je télécharge une taille de fichier de 2 Go car j'ai dirigé votre script, il est resté coincé quand il atteint la taille de 'dst_filesize'.