Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Introducción a Twisted




           Introducción a Twisted

     Esteve Fernández <esteve@fluidinfo.com>
          Enero...
Twisted

   Escrito en Python
   Framework de desarrollo (de red)
   Asíncrono
   Protocolos: HTTP, FTP, SSH, etc.
  ...
Asíncrono

   ¿Qué es?
       No bloqueante
   ¿Porqué?
       Rendimiento
       Seguridad
   ¿Cómo?
       Deferr...
Asíncrono: ¿Cómo?

   Deferreds
       Multitarea basada en cooperación
       Permiten encadenarse
       Programació...
Deferreds

   Promesas de un resultado futuro
   Permiten encadenarse
   Programación funcional
   Otros nombres: futu...
Deferreds: Ejemplo

from twisted.internet import defer


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


def...
Deferreds: Ejemplo (asíncrono)

from twisted.internet import threads
def problemaComplejo(x, y):
    return x + y
def cb(r...
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 R...
Protocolos: Ejemplo (cliente)
from twisted.internet import protocol, reactor
from twisted.protocols import basic
class Rev...
Factories

   Crean instancias de los protocolos
   Mantienen información compartida
   Ejemplos:
       Inicializació...
Trial

   Test de código con Deferreds:
    from twisted.trial import unittest
    from twisted.internet import reactor
 ...
Interfaces ZOPE

   Composición vs herencia
   Adaptadores
       Decoradores (patrón) que adaptan un interfaz a
      ...
Enlaces

   Twisted
       http://www.twistedmatrix.com
   Zope
       http://www.zope.org
   Patrones
       http:/...
Prochain SlideShare
Chargement dans…5
×

Twisted - Python Barcelona - Enero 2009

1 480 vues

Publié le

Publié dans : Technologie
  • Soyez le premier à commenter

Twisted - Python Barcelona - Enero 2009

  1. 1. Introducción a Twisted Introducción a Twisted Esteve Fernández <esteve@fluidinfo.com> Enero 2009 – Python Barcelona
  2. 2. 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
  3. 3. Asíncrono  ¿Qué es?  No bloqueante  ¿Porqué?  Rendimiento  Seguridad  ¿Cómo?  Deferreds y patrón reactor
  4. 4. 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
  5. 5. Deferreds  Promesas de un resultado futuro  Permiten encadenarse  Programación funcional  Otros nombres: futures, promises  Multitarea basada en cooperación
  6. 6. 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)
  7. 7. 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()
  8. 8. Protocolos  Independientes del transporte  Separados de la lógica  Fáciles de escribir  Cliente y/o servidor
  9. 9. 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()
  10. 10. 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()
  11. 11. Factories  Crean instancias de los protocolos  Mantienen información compartida  Ejemplos:  Inicialización BD  Funciones comunes a todos los protocolos
  12. 12. 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
  13. 13. 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
  14. 14. 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

×