Twisted, en ciències de la computació, és un entorn de programació orientada a esdeveniments en xarxa. Programació de successos implica que els usuaris escriuen petits callbacks que són cridats per l'entorn. Twisted està escrit en llenguatge Python.

Arquitectura L'entorn es basa en successos associats a rutines manegadores de successos que s'executen quan s'activa l'esdeveniment corresponent. Amb successos s'aconsegueix que els processos no quedin bloquejats, contràriament al que passa amb l'execució sense successos. Totes les biblioteques de rutines callback han de ser sense bloqueig. Avantatges : millor aprofitament del temps del processador. Inconvenients : més difícil de codificar i mantenir. Suporta gran nombre de protocols : HTTP, XMPP, NNTP, IMAP, SSH, IRC, FTP, i altres.

Exemple Exemple simple de client TCP :# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details.

""" An example client. Run simpleserv.py first before running this. """ from __future__ import print_function

from twisted.internet import reactor, protocol

# a client protocol

class EchoClient(protocol.Protocol): """Once connected, send a message, then print the result."""

def connectionMade(self): self.transport.write(b"hello, world!")

def dataReceived(self, data): "As soon as any data is received, write it back." print("Server said:", data) self.transport.loseConnection()

def connectionLost(self, reason): print("connection lost")

class EchoFactory(protocol.ClientFactory): protocol = EchoClient

def clientConnectionFailed(self, connector, reason): print("Connection failed - goodbye!") reactor.stop()

def clientConnectionLost(self, connector, reason): print("Connection lost - goodbye!") reactor.stop()

# this connects the protocol to a server running on port 8000 def main(): f = EchoFactory() reactor.connectTCP("localhost", 8000, f) reactor.run()

# this only runs if the module was *not* imported if __name__ == '__main__': main()

Referències

Vegeu també Entorn similar però en llenguatge Perl: Perl Object Environment. Entorn similar però en llenguatge Java: Netty. Entorn similar però en llenguatge Ruby: EventMachine.

Categoria:Programari