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

ISO/IEC 15504
ISO/IEC 15504ISO/IEC 15504
ISO/IEC 15504pax_isp
 
2008 Wesley SOccer
2008 Wesley SOccer2008 Wesley SOccer
2008 Wesley SOccerwesleysoccer
 
Evil Monkey Inc
Evil Monkey IncEvil Monkey Inc
Evil Monkey Inc050518
 
Slideshow
SlideshowSlideshow
SlideshowWindarr
 
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 Dsmguest9cba469
 
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 PythonEsteve Fernández
 

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 Twistedjjconti
 
SOA multiplataforma con rabbitmq y websockets
SOA multiplataforma con rabbitmq y websocketsSOA multiplataforma con rabbitmq y websockets
SOA multiplataforma con rabbitmq y websocketsbmegias
 
Introduction to wcf solutions
Introduction to wcf solutionsIntroduction to wcf solutions
Introduction to wcf solutionsMICTT Palma
 
Charla Web Services
Charla Web ServicesCharla Web Services
Charla Web ServicesJose Selman
 
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 tmpEdgar Solis
 
Clase 08 Arquitectura De Servidores
Clase 08   Arquitectura De ServidoresClase 08   Arquitectura De Servidores
Clase 08 Arquitectura De ServidoresJaime Valenzuela
 
ProtoColo tcp_ip
ProtoColo tcp_ipProtoColo tcp_ip
ProtoColo tcp_ipComdat4
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSPousli07
 
Microservicios sobre MEAN Stack
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN StackPedro J. Molina
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackPedro J. Molina
 
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 sSantiago Bernal
 
Tema iv comunicación entre procesos
Tema iv comunicación entre procesosTema iv comunicación entre procesos
Tema iv comunicación entre procesosPablo Hurtado
 

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

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
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 FabricKeyla Dolores Méndez
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
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 UninoveFagnerLisboa3
 
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 JosephBRAYANJOSEPHPEREZGOM
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
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íassuserf18419
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 

Último (16)

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
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
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
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
 
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
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
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
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 

Twisted - Python Barcelona - Enero 2009