from twisted.spread import pb
from twisted.cred.portal import IRealm
from twisted.internet import reactor
from twisted.application import service, internet
class PBBenchPerspective(pb.Avatar):
callsPerSec = 0
def __init__(self):
pass
def perspective_simple(self):
self.callsPerSec = self.callsPerSec + 1
return None
def printCallsPerSec(self):
print '(s) cps:', self.callsPerSec
self.callsPerSec = 0
# reactor.callLater(1, self.printCallsPerSec)
def perspective_complexTypes(self):
return ['a', 1, 1l, 1.0, [], ()]
class SimpleRealm:
__implements__ = IRealm
def requestAvatar(self, avatarId, mind, *interfaces):
if pb.IPerspective in interfaces:
p = PBBenchPerspective()
p.printCallsPerSec()
return pb.IPerspective, p, lambda : None
else:
raise NotImplementedError("no interface")
def main():
from twisted.cred.portal import Portal
from twisted.cred.checkers import InMemoryUsernamePasswordDatabaseDontUse
portal = Portal(SimpleRealm())
checker = InMemoryUsernamePasswordDatabaseDontUse()
checker.addUser("benchmark", "benchmark")
portal.registerChecker(checker)
app = service.Application("pbs")
s = internet.TCPServer(8787, pb.PBServerFactory(portal))
s.setServiceParent(service.IServiceCollection(app))
return app
application = main()
syntax highlighted by Code2HTML, v. 0.9.1