Question

De nombreuses bibliothèques python, même récemment écrit, utiliser httplib2 ou l'interface socket pour effectuer des tâches de réseau.

Ce sont évidemment plus faciles à coder sur de Twisted en raison de leur nature de blocage, mais je pense que cela est un inconvénient quand les intégrer avec d'autres codes, notamment GUI un. Si vous voulez l'évolutivité, l'intégration ou de simultanéité GUI tout en évitant multithreading, Twisted est alors un choix naturel.

Je serais intéressé par avis dans ces questions:

  1. Si le nouveau code de réseau (à l'exception des outils de ligne de commande petit) être écrit avec Twisted?
  2. Vous mélanger Twisted, http2lib ou code socket dans le même projet?
  3. Twisted pythonique pour la plupart des bibliothèques (il est plus complexe que les alternatives, introduire une dépendance à un ensemble non standard ...)?

Modifier s'il vous plaît laissez-moi cette phrase d'une autre manière. Vous sentez-vous écrire un nouveau code de bibliothèque Twisted peut ajouter un obstacle à son adoption? Twisted a des avantages évidents (en particulier de la portabilité et l'évolutivité comme indiqué par Gimel), mais le fait qu'il ne soit pas une bibliothèque de python de base peut être considéré par certains comme un inconvénient.

Était-ce utile?

La solution

  1. Doit nouveau code de réseau (à l'exception des petits outils de ligne de commande) être écrit avec Twisted?
    • Peut-être. Cela dépend vraiment. Parfois, il est juste assez facile pour envelopper les appels de blocage dans leur propre fil. Twisted est bon pour un grand code réseau à grande échelle.
  2. Vous mélanger Twisted, http2lib ou un code socket dans le même projet?
    • Bien sûr. Mais rappelez-vous juste que Twisted seul thread, et que tout appel de blocage dans Twisted va bloquer tout le moteur.
  3. Twisted pythonique pour la plupart des bibliothèques (il est plus complexe que les alternatives, introduire une dépendance à un ensemble non standard ...)?
    • Il y a beaucoup de zélotes Twisted qui appartient le dire dans la bibliothèque standard de Python. Mais beaucoup de gens peuvent mettre en œuvre le code de réseau décent avec asyncore / asynchat.

Autres conseils

Voir -programmation asynchrone en python-twisted , vous aurez de décider si en fonction d'une bibliothèque non standard (externe) correspond à vos besoins. Notez la réponse par @Glyph , il est le fondateur du projet Twisted, et peut autoritairement répondre à <=> question connexe.

  

Au cœur de bibliothèques comme Twisted, la fonction dans la boucle principale est pas le sommeil, mais un appel de système d'exploitation comme select () ou un sondage (), comme exposé par un module comme module de sélection de python. Je dis « comme » select, parce que c'est une API qui varie beaucoup entre les plates-formes, et presque tous les outils de l'interface graphique a sa propre version. Twisted fournit actuellement une interface abstraite à 14 variations différentes sur ce thème. La chose commune qu'une telle API fournit est de fournir un moyen de dire « Voici une liste d'événements que je suis en attente pour. Allez dormir jusqu'à ce que l'un d'eux arrive, puis se réveiller et dis-moi qui l'un d'eux était. «

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top