SlideShare una empresa de Scribd logo
1 de 14
Introducción a Twisted




           Introducción a Twisted

     Esteve Fernández <esteve@fluidinfo.com>
          Enero 2009 – Python Barcelona
Twisted

   Escrito en Python
   Framework de desarrollo (de red)
   Asíncrono
   Protocolos: HTTP, FTP, SSH, etc.
   Alto rendimiento
   Separación entre lógica, protocolos y
    transportes
   Usuarios: Google, NASA, Flumotion, Fluidinfo y
    muchos más
Asíncrono

   ¿Qué es?
       No bloqueante
   ¿Porqué?
       Rendimiento
       Seguridad
   ¿Cómo?
       Deferreds y patrón reactor
Asíncrono: ¿Cómo?

   Deferreds
       Multitarea basada en cooperación
       Permiten encadenarse
       Programación funcional
       Otros nombres: futures, promises
   Reactor
       Planifica tareas
       Conecta transportes
       Demultiplexa entrada y hace de dispatcher
Deferreds

   Promesas de un resultado futuro
   Permiten encadenarse
   Programación funcional
   Otros nombres: futures, promises
   Multitarea basada en cooperación
Deferreds: Ejemplo

from twisted.internet import defer


def problemaComplejo(x, y):
    return defer.succeed(x + y)


def cb(res):
    print "Resultado: %d" % res


problemaComplejo(1, 2).addCallback(cb)
Deferreds: Ejemplo (asíncrono)

from twisted.internet import threads
def problemaComplejo(x, y):
    return x + y
def cb(res):
    print "Resultado: %d" % res
threads.deferToThread(problemaComplejo, 1, 
  2).addCallback(cb)
reactor.run()
Protocolos

   Independientes del transporte
   Separados de la lógica
   Fáciles de escribir
   Cliente y/o servidor
Protocolos: Ejemplo (servidor)

from twisted.internet import protocol, reactor
from twisted.protocols import basic
class ReverseProtocol(basic.LineReceiver):
    def lineReceived(self, line):
        self.transport.write(line[::­1] + "rn")
        self.transport.loseConnection()
class ReverseFactory(protocol.ServerFactory):
    protocol = ReverseProtocol
reactor.listenTCP(12345, ReverseFactory())
reactor.run()
Protocolos: Ejemplo (cliente)
from twisted.internet import protocol, reactor
from twisted.protocols import basic
class ReverseProtocol(basic.LineReceiver):
    def connectionMade(self):
        self.transport.write("Hello World!rn")
    def lineReceived(self, line):
        print "Recibido: %s" % line
class ReverseFactory(protocol.ServerFactory):
    protocol = ReverseProtocol
reactor.connectTCP("localhost", 12345, 
  ReverseFactory())
reactor.run()
Factories

   Crean instancias de los protocolos
   Mantienen información compartida
   Ejemplos:
       Inicialización BD
       Funciones comunes a todos los protocolos
Trial

   Test de código con Deferreds:
    from twisted.trial import unittest
    from twisted.internet import reactor
    class FooTestCase(unittest.TestCase):
      def testAlgo(self):
        d = defer.Deferred()
        d.addCallback(self.assertEquals, 
     "Ok")
        reactor.callLater(d.callback, "Ok")
        return d
Interfaces ZOPE

   Composición vs herencia
   Adaptadores
       Decoradores (patrón) que adaptan un interfaz a
        otro
   Registro de componentes (Twisted)
    from twisted.python import components
    components.registerAdaptor(Adaptador, 
     IOrigen, IDestino
Enlaces

   Twisted
       http://www.twistedmatrix.com
   Zope
       http://www.zope.org
   Patrones
       http://en.wikipedia.org/wiki/Reactor_pattern
       http://en.wikipedia.org/wiki/Futures_and_promises
       http://en.wikipedia.org/wiki/Decorator_pattern

Más contenido relacionado

Destacado (7)

2014 MATC Spring Lecture Series: Chris Schwarz
2014 MATC Spring Lecture Series: Chris Schwarz2014 MATC Spring Lecture Series: Chris Schwarz
2014 MATC Spring Lecture Series: Chris Schwarz
 
ISO/IEC 15504
ISO/IEC 15504ISO/IEC 15504
ISO/IEC 15504
 
2008 Wesley SOccer
2008 Wesley SOccer2008 Wesley SOccer
2008 Wesley SOccer
 
Evil Monkey Inc
Evil Monkey IncEvil Monkey Inc
Evil Monkey Inc
 
Slideshow
SlideshowSlideshow
Slideshow
 
Lwf Dws Rwanda Presentation On Peace Regional Consultation Dsm
Lwf Dws Rwanda Presentation On Peace Regional Consultation DsmLwf Dws Rwanda Presentation On Peace Regional Consultation Dsm
Lwf Dws Rwanda Presentation On Peace Regional Consultation Dsm
 
The Robot Operating System ecosystem and Python
The Robot Operating System ecosystem and PythonThe Robot Operating System ecosystem and Python
The Robot Operating System ecosystem and Python
 

Similar a Twisted - Python Barcelona - Enero 2009

Desarrollando aplicaciones de red con Twisted
Desarrollando aplicaciones de red con TwistedDesarrollando aplicaciones de red con Twisted
Desarrollando aplicaciones de red con Twisted
jjconti
 
Introduction to wcf solutions
Introduction to wcf solutionsIntroduction to wcf solutions
Introduction to wcf solutions
MICTT Palma
 
Charla Web Services
Charla Web ServicesCharla Web Services
Charla Web Services
Jose Selman
 
ProtoColo tcp_ip
ProtoColo tcp_ipProtoColo tcp_ip
ProtoColo tcp_ip
Comdat4
 

Similar a Twisted - Python Barcelona - Enero 2009 (20)

Real time
Real timeReal time
Real time
 
Desarrollando aplicaciones de red con Twisted
Desarrollando aplicaciones de red con TwistedDesarrollando aplicaciones de red con Twisted
Desarrollando aplicaciones de red con Twisted
 
Servicios web Extendido_error perl
Servicios web Extendido_error perlServicios web Extendido_error perl
Servicios web Extendido_error perl
 
Real-time web
Real-time webReal-time web
Real-time web
 
07 tcpip _2de2
07 tcpip _2de207 tcpip _2de2
07 tcpip _2de2
 
Networking
NetworkingNetworking
Networking
 
SOA multiplataforma con rabbitmq y websockets
SOA multiplataforma con rabbitmq y websocketsSOA multiplataforma con rabbitmq y websockets
SOA multiplataforma con rabbitmq y websockets
 
Protocolo http
Protocolo httpProtocolo http
Protocolo http
 
Introduction to wcf solutions
Introduction to wcf solutionsIntroduction to wcf solutions
Introduction to wcf solutions
 
Charla Web Services
Charla Web ServicesCharla Web Services
Charla Web Services
 
Curso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmpCurso migración de aplicaciones nsl nk90 a tmp
Curso migración de aplicaciones nsl nk90 a tmp
 
Clase 08 Arquitectura De Servidores
Clase 08   Arquitectura De ServidoresClase 08   Arquitectura De Servidores
Clase 08 Arquitectura De Servidores
 
ProtoColo tcp_ip
ProtoColo tcp_ipProtoColo tcp_ip
ProtoColo tcp_ip
 
TCP IP
TCP IPTCP IP
TCP IP
 
TCP/IP
TCP/IPTCP/IP
TCP/IP
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSP
 
Microservicios sobre MEAN Stack
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN Stack
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
 
Arquitectura routers para soporte de qo s
Arquitectura routers para soporte de qo sArquitectura routers para soporte de qo s
Arquitectura routers para soporte de qo s
 
Tema iv comunicación entre procesos
Tema iv comunicación entre procesosTema iv comunicación entre procesos
Tema iv comunicación entre procesos
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (15)

Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Twisted - Python Barcelona - Enero 2009