stringtranslate.com

Retorcido (software)

Twisted es un marco de programación de red basado en eventos escrito en Python y con licencia MIT .

Los proyectos Twisted admiten de diversas formas TCP , UDP , SSL/TLS , multidifusión IP , sockets de dominio Unix , muchos protocolos (incluidos HTTP , XMPP , NNTP , IMAP , SSH , IRC , FTP y otros) y mucho más. Twisted se basa en el paradigma de programación basada en eventos , lo que significa que los usuarios de Twisted escriben breves devoluciones de llamada que son llamadas por el marco.

Ideas centrales

Separación de protocolos y transportes.

Twisted está diseñado para una separación completa entre protocolos lógicos (que generalmente se basan en una semántica de conexión basada en flujo, como HTTP o POP3 ) y capas de transporte físico que soportan dicha semántica basada en flujo (como archivos, sockets o bibliotecas SSL). La conexión entre un protocolo lógico y una capa de transporte ocurre en el último momento posible, justo antes de que la información pase a la instancia del protocolo lógico. El protocolo lógico está informado de la instancia de la capa de transporte y puede utilizarla para enviar mensajes y comprobar la identidad del par. Tenga en cuenta que todavía es posible, en el código de protocolo, consultar profundamente la capa de transporte sobre problemas de transporte (como verificar un certificado SSL del lado del cliente). Naturalmente, dicho código de protocolo fallará ( generará una excepción ) si la capa de transporte no admite dicha semántica.

Diferidos

Un elemento central del modelo de aplicación Twisted es el concepto de diferido (en otros lugares llamado futuro ). Un diferido es una instancia de una clase diseñada para recibir y procesar un resultado que aún no se ha calculado, por ejemplo porque se basa en datos de un par remoto. Los diferidos se pueden distribuir, como los objetos normales, pero no se puede pedir su valor. Cada diferido admite una cadena de devolución de llamada. Cuando el diferido obtiene el valor, se pasa a las funciones en la cadena de devolución de llamada, y el resultado de cada devolución de llamada se convierte en la entrada para la siguiente. Los diferidos permiten operar con el resultado de una llamada a función antes de que su valor esté disponible.

Por ejemplo, si un diferido devuelve una cadena de un par remoto que contiene una dirección IP en formato cuádruple, se puede adjuntar una devolución de llamada para traducirla a un número de 32 bits. Cualquier usuario del diferido ahora puede tratarlo como diferido y devuelve un número de 32 bits. Esto, y la capacidad relacionada para definir "errbacks" (devoluciones de llamada que se denominan controladores de errores), permite que el código especifique de antemano qué hacer cuando ocurre un evento asincrónico, sin detenerse a esperar el evento. En sistemas no controlados por eventos, por ejemplo que utilizan subprocesos , el sistema operativo incurre en una sobrecarga prematura y adicional de organización de subprocesos cada vez que se realiza una llamada de bloqueo.

Soporte de hilo

Twisted admite una abstracción sobre subprocesos sin formato, utilizando un subproceso como fuente diferida. Así, se devuelve inmediatamente un diferido, que recibirá un valor cuando finalice el hilo. Se pueden adjuntar devoluciones de llamada que se ejecutarán en el hilo principal, aliviando así la necesidad de soluciones de bloqueo complejas. Un excelente ejemplo de tal uso, que proviene de las bibliotecas de soporte de Twisted, es el uso de este modelo para llamar a bases de datos. La llamada a la base de datos ocurre en un hilo externo, pero el análisis del resultado ocurre en el hilo principal.

Soporte de bucle externo

Twisted puede integrarse con bucles de eventos externos, como los de GTK+ , Qt y Cocoa (a través de PyObjC ). Esto permite usar Twisted como capa de red en programas de interfaz gráfica de usuario (GUI), usando todas sus bibliotecas sin agregar una sobrecarga de subproceso por socket, como lo haría el uso de la biblioteca nativa de Python. Un servidor web completo se puede integrar en proceso con un programa GUI utilizando este modelo, por ejemplo.

Aplicaciones que utilizan Twisted

Ver también

Referencias

  1. ^ Shtull-Trauring, Itamar (22 de octubre de 2002). "Torcido 1.0". Twisted-python (lista de correo) . Consultado el 14 de agosto de 2008 .
  2. ^ "Versión 23.10.0". 31 de octubre de 2023 . Consultado el 19 de noviembre de 2023 .
  3. ^ "Manual de construcción de robots". github.com . Archivado desde el original el 29 de julio de 2012 . Consultado el 28 de octubre de 2017 .
  4. ^ "Python se desliza hacia los sistemas". eweek.com .
  5. ^ SageMath#Características
  6. ^ Sage una descripción básica [ enlace muerto permanente ]
  7. ^ "mistah DJ". omegler.blogspot.com .
  8. ^ "Grupos de Google". grupos.google.com .
  9. ^ "Servidor de calendario y contactos". www.calendarserver.org .
  10. ^ "Twitch - Empleos". Contracción nerviosa .
  11. ^ "Meteo de velocidad -". www.velocityweather.com .
  12. ^ Un monitor orientado a WebSocket para Wikipedia (también, wikimon, monstruos wikital), hatnote, 2017-09-03 , consultado el 21 de septiembre de 2017
  13. ^ "Diluvio: compilar desde la fuente". dev.deluge-torrent.org . Consultado el 8 de enero de 2020 .
  14. ^ "Agujero de gusano mágico". github.com .
  15. ^ "Máquina de eventos" . Consultado el 20 de agosto de 2011 .
  16. ^ "Integración con otros marcos: documentación de Kivy 1.11.0.dev0". kivy.org .

enlaces externos