Twisted (programari)

De Viquipèdia
Salta a la navegació Salta a la cerca
Crystal Clear app winprops bw.pngTwisted
Twisted Logo (software).svg

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ó d'events 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 events associats a rutines manegadores d'events que s'executen quan s'activa l'event corresponent. Amb events s'aconsegueix que els processos no quedin bloquejats, contràriament al que passa amb l'execució sense events.[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]