Twisted

Aquest article tracta sobre el programari. Si cerqueu la pel·lícula, vegeu «Tomb inesperat».
Twisted

TipusEntorn de treball per a aplicacions web
Versió inicial22 d'octubre del 2002
Versió estable17.9.0 / 23 de setembre del 2017
LlicènciaMIT
Part deSoftware Freedom Conservancy Modifica el valor a Wikidata
Característiques tècniques
Sistema operatiuMultiplataforma
Escrit enPHP
Gestor de paquetspip (en) Tradueix Modifica el valor a Wikidata
Equip
Creador/sGlyph Lefkowitz
Desenvolupador(s)En comunitat
Més informació
Lloc webtwistedmatrix.com
Seguiment d'errorsSeguiment d'errors Modifica el valor a Wikidata
Guia d'usuariGuia d'usuari Modifica el valor a Wikidata

Twisted, en ciències de la computació, és un entorn de programació orientada a events 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.[1][2][3][4]

Arquitectura

[modifica]
  • L'entorn es basa en successos associats a rutines manegadores de successos que s'executen quan s'activa l'event corresponent. Amb successos s'aconsegueix que els processos no quedin bloquejats, contràriament al que passa amb l'execució sense successos.[5]
  • 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

[modifica]

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

[modifica]
  1. jcalderone. «Twisted Web in 60 seconds: serve static content from a directory» (en anglès). http://jcalderone.livejournal.com,+16-09-2009.+[Consulta: 23 novembre 2017].
  2. Mcgreggor, Duncan. «Async Batching with Twisted: A Walkthrough» (en anglès). http://oubiwann.blogspot.com.es,+20-06-2008.+[Consulta: 23 novembre 2017].
  3. «Welcome to the Twisted documentation! — Twisted 17.9.0 documentation» (en anglès). http://twistedmatrix.com/.+[Consulta: 23 novembre 2017].
  4. «An introduction to Twisted» (en anglès). https://www.slideshare.net.+[Consulta: 23 novembre 2017].
  5. «Python Twisted» (en anglès). https://www.slideshare.net.+[Consulta: 23 novembre 2017].

Vegeu també

[modifica]