#! /usr/bin/python from zope.interface import implements from twisted.spread import pb from twisted.cred import checkers, portal from twisted.internet import reactor class MyPerspective(pb.Avatar): def __init__(self, name): self.name = name def perspective_foo(self, arg): print "I am", self.name, "perspective_foo(",arg,") called on", self class MyRealm: implements(portal.IRealm) def requestAvatar(self, avatarId, mind, *interfaces): if pb.IPerspective not in interfaces: raise NotImplementedError return pb.IPerspective, MyPerspective(avatarId), lambda:None p = portal.Portal(MyRealm()) p.registerChecker( checkers.InMemoryUsernamePasswordDatabaseDontUse(user1="pass1")) reactor.listenTCP(8800, pb.PBServerFactory(p)) reactor.run()