[Twisted-Python] Why does this simple server not work?

apocalypznow apocalypznow at gmail.com
Mon Nov 13 12:01:27 MST 2006


The following is run but almost immediately terminates without any 
errors.  WHY?  I used "twistd -noy server.tac".
Here is the code:
****************************
import twisted
from twisted.spread import pb
from twisted.cred import checkers,portal
from twisted.internet import reactor
from twisted.python import threadable
from twisted.python import usage
import threading
import socket

clients={}

class ClientRemoteObject(pb.Avatar):
     global clients
     def __init__(self):
         print "ClientRemoteObject initialized."

     def attached(self):
         print "Client attached"
         return self

     def detached(self):
         print "Client detached"

     def perspective_initialDataExchange(self,clientreference,username):
         print "Client reference attached for:" + username
         clients[username]=clientreference
         data={}
         data['connected']=1
         return data

     def perspective_broadcastMessage(self,msg):
         for user in clients:
             clients[user].callRemote("messageCB",msg + "s")



class DefaultRealm:
     __implements__ = portal.IRealm

     def requestAvatar(self, avatarID, mind, *interfaces):
         assert pb.IPerspective in interfaces
         clientremoteobj = ClientRemoteObject()
         clientremoteobj.attached()
         return pb.IPerspective, clientremoteobj, lambda 
a=clientremoteobj:a.detached()

def shutdownCleanUp():
     print "Twisted reactor shutting down."



application = twisted.application.service.Application("server01")
myService = twisted.application.service.IServiceCollection(application)

reactor.addSystemEventTrigger('before','shutdown',shutdownCleanUp)

p = portal.Portal(DefaultRealm())
dbu=twisted.cred.checkers.InMemoryUsernamePasswordDatabaseDontUse()
dbu.addUser("user1","pass1")
p.registerChecker(dbu)


myServer = twisted.application.internet.TCPServer(81,pb.PBServerFactory(p))
myServer.setServiceParent(myService)
****************
It used to work with Twisted 1.3rc1, but it does not run with Twisted 
2.2 (or 2.3 or 2.4).  I am using Python 2.3, and running this from a DOS 
prompt in Windows.






More information about the Twisted-Python mailing list