¿Qué tiene de genial Twisted?

Estoy escuchando cada vez más que el marco torcido de Python oscila y otros marcos palidecen en comparación.

¿Alguien puede arrojar algo de luz sobre esto y posiblemente comparar Twisted con otros marcos de progtwigción de red?

Hay muchos aspectos diferentes de Twisted que te pueden interesar.

Twisted incluye muchas implementaciones de protocolos, lo que significa que es muy probable que haya una API que pueda usar para comunicarse con algún sistema remoto (ya sea cliente o servidor en la mayoría de los casos), ya sea HTTP , FTP , SMTP, POP3, IMAP4 , DNS , IRC, MSN, OSCAR, XMPP / Jabber , telnet, SSH , SSL, NNTP , o uno de los protocolos más oscuros como Finger, o ident, o uno de los protocolos de creación de protocolos de nivel inferior como cadenas de DJB , simples Protocolos orientados a líneas , o incluso uno de los protocolos personalizados de Twisted como Perspective Broker (PB) o Asynchronous Messaging Protocol (AMP) .

Otra cosa interesante sobre Twisted es que, además de estas implementaciones de protocolo de bajo nivel, a menudo encontrarás una abstracción que es algo más fácil de usar. Por ejemplo, al escribir un servidor HTTP, Twisted Web proporciona una abstracción de “Recursos” que le permite construir jerarquías de URL a partir de objetos de Python para definir cómo se responderán las solicitudes.

Todo esto está relacionado con las API que cooperan, principalmente debido al hecho de que ninguna de estas funciones se implementa mediante el locking en la red, por lo que no es necesario iniciar un subproceso para cada operación que desee realizar . Esto contribuye a la escalabilidad que la gente suele atribuir a Twisted (aunque es el tipo de escalabilidad que solo involucra a una sola computadora, no el tipo de escalabilidad que permite que su aplicación crezca para usar un grupo completo de hosts) porque Twisted puede manejar miles de conexiones en un solo hilo, que tiende a funcionar mejor que tener miles de hilos, cada uno para una sola conexión.

Evitar los subprocesos también es beneficioso para las pruebas y la depuración (y por lo tanto, la confiabilidad en general). Como no hay un cambio de contexto preventivo en un progtwig típico basado en Twisted, generalmente no necesita preocuparse por el locking. Las condiciones de carrera que dependen del orden en que ocurren los diferentes eventos de la red se pueden probar fácilmente mediante la simulación de los eventos de la red (mientras que la simulación de un cambio de contexto no es una característica proporcionada por la mayoría (¿alguna?) Bibliotecas de subprocesos).

Twisted también está muy, muy preocupado por la calidad . Por lo tanto, rara vez encontrará regresiones en un lanzamiento retorcido, y la mayoría de las API solo funcionan, incluso si no las está utilizando de la forma habitual (porque intentamos probar todas las formas en que podría usarlas, no solo las comunes). camino). Esto es particularmente cierto para todo el código agregado a Twisted (o modificado) en los últimos 3 o 4 años, ya que la cobertura de línea del 100% ha sido un requisito de prueba mínimo desde entonces.

Otra fuerza a menudo pasada por alto de Twisted es sus diez años de descubrir diferentes peculiaridades de la plataforma. Hay muchos errores de socket no documentados en diferentes plataformas y es muy difícil aprender que existen, y mucho menos manejarlos. Twisted ha cubierto gradualmente más y más de estos, y es bastante bueno al respecto en este momento. Los proyectos más jóvenes no tienen esta experiencia, por lo que se pierden los modos de falla oscura que probablemente solo les sucederán a los usuarios de cualquier proyecto que lances, no a ti.

Todo lo que digo, lo que más me gusta de Twisted es que es una biblioteca bastante aburrida que me permite ignorar muchos problemas realmente aburridos y solo concentrarme en las cosas interesantes y divertidas. 🙂

Bueno, probablemente sea de acuerdo al gusto.

Twisted le permite crear fácilmente servidores / clientes de red controlados por eventos, sin preocuparse realmente por todo lo que se necesita para lograrlo. Y gracias a la licencia MIT , Twisted se puede utilizar en casi cualquier lugar. Pero no he hecho ninguna evaluación comparativa, así que no tengo idea de cómo se escala, pero supongo que es bastante bueno.

Otra ventaja serían los proyectos retorcidos , con los que puede ver rápidamente cómo implementar la mayoría de los servidores / servicios que desearía.

Twisted también tiene una gran documentación , cuando comencé hace un par de semanas pude obtener rápidamente un prototipo funcional.

Bastante nuevo en la escena de Python, por favor, corríjame si estoy equivocado.