2009-10-07 4 views
1

Je cherche une bonne bibliothèque client/serveur ftp python haut niveau. Je travaille sur un projet qui a « évolué » un petit http/bibliothèque ftp sur le dessus de ftplib/urllib/urllib2 de ce qui était à l'origine une fonction, et presque rien de tout cela a été conçu pour être construit sur. Alors maintenant, il est temps de refactoriser sérieusement, et je voudrais juste passer à une bibliothèque. La chose que je préfère ne pas traiter est la logique robuste-réessayer (comme, réessayer 15 fois, ou continuer à réessayer jusqu'à 12 heures).Bon python de haut niveau ftp/http lib?

Le problème que nous avons maintenant est que nous avons environ 10 fonctions distinctes grab() et put(). Esthétiquement parlant, je préfère avoir un de chacun des arguments facultatifs le long des lignes de try_until=datetime(2009, 10, 7, 19) ou retrys=15. Nous travaillons avec des données binaires et textuelles, donc les fonctions devraient être raisonnablement intelligentes à ce sujet. Et nous faisons beaucoup plus d'attraper que de mettre, donc je peux me passer des puts.

urlgrabber ressemble exactement à ce que je veux, mais il ne semble pas y avoir eu de développement pour les deux dernières années et je ne suis pas sûr de savoir comment il est compatible avec 2.6. Quelqu'un a-t-il beaucoup d'expérience avec ça? Ou des opinions?

+0

client ou côté serveur? Il apparaît, puisque vous mentionnez pyCURL, que vous recherchez une bibliothèque cliente FTP. S'il vous plaît clarifier cela. Aussi, veuillez décrire ce qui ne va pas avec urllib2. –

+0

cela vous at-il aidé? Il n'y a rien de "mal" avec urllib2, c'est juste que je veux quelque chose pour me faciliter la vie. – quodlibetor

+0

@quodlibetor: Non, cela n'a pas aidé du tout. Pourquoi ne pouvez-vous pas écrire une fonction qui fait ce que vous voulez et utilise urllib2? Je suis toujours incapable de comprendre quel est le problème. –

Répondre

4

urlgrabber semble être très mature, et comme il est utilisé par yum (et donc de nombreux systèmes Unix), je pensais que ce serait très stable. Python 2.x est largement rétrocompatible. Vous pourriez rencontrer quelques avertissements, mais je m'attendrais à ce qu'il fonctionne correctement sous Python 2.6.

+0

Oui, je l'ai testé et ça * semble * fonctionner correctement, mais je suis un peu nerveux. Et je suis également un peu surpris que quelque chose qui est au cœur de YUM n'a pas eu un seul commit en 2 ans. Sauf si je regarde le mauvais référentiel, mais je ne peux pas en trouver d'autres. – quodlibetor

+0

Peu importe * si * un projet a des validations récentes. Beaucoup de projets matures atteignent un niveau de stabilité, où les fonctionnalités sont complètes et les bugs ont été écrasés. –

+0

Cela a fonctionné pour moi pour les dernières semaines, donc: génial. – quodlibetor

0

En fonction du type d'application que vous écrivez, vous pouvez envisager twisted python, car il intègre le code http et le code client. Cependant, il s'agit d'un écart important par rapport à la programmation standard en python.

Le gros avantage de tordu pour vous est qu'il peut gérer vos demandes client en arrière-plan, poignées et relances est très évolutive.

Mise à jour

Pour un script rapide qui interagit avec les serveurs, voir cette réponse serverfault: https://serverfault.com/questions/66336/script-automation-login-enter-password-run-commands-save-output-locally

Il recomends l'outil expect

Expect is a tool for automating interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, etc. Expect really makes this stuff trivial. Expect is also useful for testing these same applications. And by adding Tk, you can also wrap interactive applications in X11 GUIs.

Expect can make easy all sorts of tasks that are prohibitively difficult with anything else. You will find that Expect is an absolutely invaluable tool - using it, you will be able to automate tasks that you've never even thought of before - and you'll be able to do this automation quickly and easily.

Ça sonne bien pour moi! côté

+0

Merci. Une des premières réponses à cette question (depuis supprimée, apparemment) a suggéré que j'utilise twisted. * Quelque chose * .FTP. Je l'ai regardé et ce n'est pas vraiment un très bon choix, je ne pense pas, principalement parce que nous devons bloquer à chaque fois que nous le faisons. En outre, il ne fait pas beaucoup d'abstraction si vous ne faites pas le genre de choses pour lesquelles il est spécialisé. – quodlibetor