Dentro de estos componentes tenemos a Twisted de la empresa Twisted Matrix Laboratories, este componente es un framework orientado a eventos de programación de redes para Python, originalmente fue desarrollado para videojuegos, sin embargo actualmente se utiliza mucho para todo tipo de programas en red.
Descargando e instalando Twisted
Instalar Twisted es muy sencillo, primero debemos descargar la versión de la librería que necesitamos dependiendo de nuestro sistema, para ello podemos ir a la web con el siguiente enlace: http://twistedmatrix. com, una vez ahí podemos buscar la versión más adecuada como podemos ver en la siguiente imagen:
Si necesitamos una versión más especifica podemos ir a la sección detallada de descargas pulsando el enlace DOWNLOAD en la parte superior derecha del site.
Una vez obtenemos la versión que queremos, podemos instalarla, si estamos utilizando Windows, el instalador nos va a llevar paso a paso por los requerimientos, en caso que sea otro sistema, debemos obtener los fuentes y luego hacer lo siguiente dentro de la carpeta en la cual descomprimimos los archivos:
python setup.py install
Una vez que tengamos todo ya podemos empezar a utilizar esta librería para construir nuestros programas.
Creando un servidor básico
Al inicio habíamos explicado que Twisted está orientado a eventos y aquí lo veremos. Al momento de hacer un servidor utilizando las librerías socket de Python debemos declarar un loop que es el encargado de verificar las nuevas conexiones, en este caso ahora lo que haremos serán manejadores de eventos que van a gestionar cada una de las situaciones que ocurran .
Los eventos que debemos prever son, una nueva conexión, recepción de datos, un cliente se desconecta, etc. Estos manejadores de eventos se definen en un protocolo y dicho protocolo necesita de un factory que pueda construir los objetos de los eventos, esto puede sonar confuso pero ahora que veamos el código todo estará más claro.
Veamos a continuación un código donde escribimos un servidor básico utilizando Twisted:
from twisted.internet import reactor from twisted.internet.protocol import Protocol, Factory class SimpleLogger(Protocol): def connectionMade(self): print 'Got connection from', self.transport.client def connectionLost(self, reason): print self.transport.client, 'disconnected' def dataReceived(self, data): print data factory = Factory() factory.protocol = SimpleLogger reactor.listenTCP(1234, factory) reactor.run()
Lo primero que realizamos es importar las librerías y componentes necesarios, en este caso reactor, Protocol y Factory, luego manejamos los eventos dentro de una clase, como cuando tenemos una nueva conexión, una conexión perdida y si recibimos datos.
Hacemos una instancia de Factory que es quien se encargará de construir los objetos necesarios, le especificamos que su protocolo será la clase que hemos realizado y finalmente con reactor ponemos nuestro programa a escuchar a un puerto; como vemos no es nada complicado viéndolo de esta forma.