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!
python twisted server pip
Commentami!