2010-04-03 6 views
3

J'ai besoin de télécharger plusieurs fichiers du répertoire vers le serveur via FTP et SFTP. J'ai résolu cette tâche pour SFTP avec python, paramiko et threading. Mais j'ai un problème avec FTP. J'ai essayé d'utiliser ftplib pour python, mais il semble qu'il ne supporte pas le thread et que je télécharge tous les fichiers un par un, ce qui est très lent.Téléchargement FTP multithread. C'est possible?

Je me demande s'il est même possible de faire des téléchargements multi-threads avec le protocole FTP sans créer de connexions/autorisations séparées (cela prend trop de temps)?

La solution peut être sur Python ou PHP. Peut-être CURL? Serait reconnaissant pour des idées.

Répondre

1

Une autre approche de la concurrence en dehors de travers est l'io asynchrone. Pour Python, la boîte à outils standard pour le réseau asynchrone est Twisted.

Jetez un oeil à ce client FTP example dans Twisted.

2

Il est important de créer un asynchronous FTP client mais, fondamentalement, le protocole FTP permet des commandes synchrones. Pour autoriser les téléchargements/téléchargements parallèles, vous devez ouvrir plusieurs connexions FTP. Cela peut être fait par ftplib et les threads.

0

Il semble que quelque chose puisse être possible avec le module pycurl.

Il y a deux exemples que si vous les mettez ensemble fonctionnerait.

Aller ici: http://pycurl.cvs.sourceforge.net/pycurl/pycurl/examples/

et regardez dans le retriever-multi.py et file_upload.py des exemples sur la façon de les mettre éventuellement ensemble.

0

Vous pouvez exécuter le script dans plusieurs invites de commande/shells (assurez-vous que chaque fichier n'est traité qu'une seule fois par tous les scripts). Je ne suis pas sûr si cette astuce rapide et sale permettra d'améliorer la vitesse de transfert si ..

Questions connexes