Twisted is easy

6
Twisted is Easy! Moshe Zadka

description

Slides for lightning talk -- Twisted is easy

Transcript of Twisted is easy

Page 1: Twisted is easy

Twisted is Easy!

Moshe Zadka

Page 2: Twisted is easy

Do Nothing

from twisted.internet import reactor

reactor.run()

Page 3: Twisted is easy

Protocol Parsing

from twisted.internet import reactor, protocol

class Echo(protocol.Protocol):

def dataReceived(self, data):

self.transport.write(data)

factory = protocol.Factory()

factory.protocol = Echo

reactor.listenTCP(1033, factory)

reactor.run()

Page 4: Twisted is easy

Web Development

from twisted.internet import reactor

from twisted.web import resource, server

class Resource(resource.Resource):

isLeaf = True

users = 0

def render_GET(self, request):

self.users += 1

return "Welcome user number %d" % self.users

reactor.listenTCP(1080, server.Site(Resource()))

reactor.run()

Page 5: Twisted is easy

Multi-protocol Servers (Classes)

from twisted.internet import reactor, protocol

from twisted.web import resource, server

class Counter(object):

count = 0

def add(self, number):

self.count += number

class ByteCount(protocol.Protocol):

def dataReceived(self, data):

self.factory.counter.add(len(data))

class Resource(resource.Resource):

isLeaf = True

counter = None

def render_GET(self, request):

return "Received %d bytes" % self.counter.count

Page 6: Twisted is easy

Multi-protocol Servers (Set-up)

factory = protocol.Factory()

factory.protocol = ByteCount

factory.counter = Counter()

resource = Resource()

resource.counter = factory.counter

reactor.listenTCP(1033, factory)

reactor.listenTCP(1080, server.Site(resource))

reactor.run()