Creare un server in Python con Twisted

Mattepuffo's logo
Creare un server in Python con Twisted

Creare un server in Python con Twisted

Twisted è un framework per Python descritto come " an event-based framework for internet applications".

Permette di creare sia della applicazioni server che client (dovremmo già averlo visto sotto questo punto di vista).

Qui vediamo un paio di esempi per creare dei semplici server; prima di tutto installiamolo con pip:

pip install twisted[tls] 

Qui sotto un esempio di echo-server:

from twisted.internet import reactor
from twisted.internet.protocol import Factory, Protocol

class Echo(Protocol):
    def dataReceived(self, data):
        self.transport.write(data)

def main():
    f = Factory()
    f.protocol = Echo
    reactor.listenTCP(8000, f)
    reactor.run()

if __name__ == "__main__":
    main()

Abbiamo usato il protocollo TCP, ma possiamo benissimo passare ad UDP.

Qui sotto un esempio di web server in cui teniamo un conto delle richieste effettuate (che si azzera quando spegniamo il server):

from twisted.web import server, resource
from twisted.internet import reactor, endpoints

class ContaRichieste(resource.Resource):
    isLeaf = True
    numberRequests = 0

    def render_GET(self, request):
        self.numberRequests += 1
        request.setHeader(b"content-type", b"text/plain")
        content = u"Richiesta numero: #{}n".format(self.numberRequests)
        return content.encode("ascii")

if __name__ == "__main__":
    endpoints.serverFromString(reactor, "tcp:8000").listen(server.Site(ContaRichieste()))
    reactor.run()

In entrambi i casi per testarlo potete usare semplicimente curl:

curl http://localhost:8000

Enjoy!


Condividi

Commentami!