83 votes

Qu'est-ce qui est si cool dans Twisted ?

J'entends de plus en plus souvent que Python est Torsadé et les autres cadres sont bien pâles en comparaison.

Quelqu'un peut-il m'éclairer à ce sujet et éventuellement comparer Twisted avec d'autres frameworks de programmation réseau.

129voto

Jean-Paul Calderone Points 27680

Il y a beaucoup d'aspects différents de Twisted que tu pourrais trouver cool.

Twisted comprend de très nombreuses implémentations de protocoles, ce qui signifie qu'il est plus que probable qu'il y aura une API que vous pourrez utiliser pour parler à un système distant (client ou serveur dans la plupart des cas), que ce soit HTTP , FTP , SMTP, POP3, IMAP4 , DNS , IRC, MSN, OSCAR, XMPP/Jabber , telnet, SSH , SSL, NNTP ou l'un des éléments suivants vraiment des protocoles obscurs tels que Finger, ou ident, ou l'un des protocoles de construction de niveau inférieur tels que DJB's filetages , protocoles simples orientés ligne ou même un des protocoles personnalisés de Twisted comme Courtier en perspective (PB) o Protocole de messagerie asynchrone (AMP) .

Un autre aspect intéressant de Twisted est qu'en plus de ces implémentations de protocole de bas niveau, vous trouverez souvent une abstraction qui est un peu plus facile à utiliser. Par exemple, lors de l'écriture d'un serveur HTTP, Twisted Web fournit une abstraction "ressource". qui vous permet de construire des hiérarchies d'URL à partir d'objets Python pour définir la manière dont les demandes seront traitées.

Tout cela est lié à des API coopérantes, principalement en raison du fait qu'aucune de ces fonctionnalités n'est mise en œuvre par blocage sur le réseau, de sorte que vous n'avez pas besoin de commencer un fil pour chaque opération que vous voulez faire . Cela contribue à l'évolutivité que les gens attribuent souvent à Twisted (bien qu'il s'agisse du type d'évolutivité qui n'implique qu'un seul ordinateur, et non du type d'évolutivité qui permet à votre application de se développer pour utiliser un cluster entier d'hôtes), car Twisted peut gérer des milliers de connexions dans un seul thread, ce qui tend à fonctionner mieux que d'avoir des milliers de threads, chacun pour une seule connexion.

Éviter le threading est également bénéfique pour les tests et le débogage (et donc la fiabilité en général). Puisqu'il n'y a pas de changement de contexte préemptif dans un programme typique basé sur Twisted, vous n'avez généralement pas à vous soucier du verrouillage. Les conditions de course qui dépendent de l'ordre d'apparition de différents événements réseau peuvent facilement être testées en simulant ces événements réseau (alors que la simulation d'un changement de contexte n'est pas une fonctionnalité fournie par la plupart (ou toutes ?) les bibliothèques de threads).

Twisted est aussi vraiment, vraiment soucieux de la qualité . Donc vous trouver rarement des régressions dans une version de Twisted, et la plupart des APIs fonctionnent, même si vous ne les utilisez pas de la manière habituelle (parce que nous essayons de tester toutes les manières dont vous pourriez les utiliser, et pas seulement la manière habituelle). Ceci est particulièrement vrai pour tout le code ajouté à Twisted (ou modifié) au cours des 3 ou 4 dernières années, puisque la couverture de ligne de 100% est une exigence minimale de test depuis lors.

Un autre atout souvent négligé de Twisted est le fait qu'il a passé dix ans à étudier les différentes plates-formes. bizarreries . Il y a beaucoup d'erreurs de socket non documentées sur différentes plateformes et il est vraiment difficile d'apprendre qu'elles existent, sans parler de les gérer. Twisted a progressivement couvert de plus en plus de ces erreurs, et il s'en sort plutôt bien à ce stade. Les projets plus jeunes n'ont pas cette expérience, ils manquent donc des modes de défaillance obscurs qui n'arriveront probablement qu'aux utilisateurs d'un projet que vous publiez, pas à vous.

Tout cela dit, ce que je trouve le plus cool dans Twisted, c'est que c'est une bibliothèque plutôt ennuyeuse qui me permet d'ignorer beaucoup de problèmes vraiment ennuyeux et de me concentrer sur les choses intéressantes et amusantes. :)

9voto

Johann du Toit Points 1640

Eh bien, c'est probablement selon les goûts.

Twisted vous permet de créer facilement des serveurs/clients réseau pilotés par événements, sans vraiment vous soucier de tout ce qui est nécessaire pour y parvenir. Et grâce à la Licence MIT Twisted peut être utilisé presque partout. Mais je n'ai pas fait d'évaluation comparative, donc je n'ai aucune idée de la façon dont il s'adapte, mais je suppose qu'il est assez bon.

Un autre atout serait le Projets tordus avec lequel vous pouvez rapidement voir comment mettre en œuvre la plupart des serveurs/services que vous souhaitez.

Twisted a aussi de superbes documentation Lorsque j'ai commencé à l'utiliser il y a quelques semaines, j'ai pu obtenir rapidement un prototype fonctionnel.

Je suis assez nouveau dans le monde de Python, mais corrigez-moi si je me trompe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X