[Twisted-Python] How to invoke the remote method based on twisted in django web app?

Phil Mayers p.mayers at imperial.ac.uk
Fri Mar 6 04:33:51 MST 2009


Boern wrote:
> hi,all:
> I developed a web app in diango and a remote service in twisted, and I 
> want to invoke the twisted remote method in django web.
> example:
> 
> the remote service code :
> 
> class Echoer(pb.Root):
>     def remote_echo(self, task):
>       
>         print 'echoing:', task
>         
>         return task
> 
> if __name__ == '__main__':
>     reactor.listenTCP(8789, pb.PBServerFactory(Echoer()))
>     reactor.run()
> 
> -------------------------------------------------------------------------------------------------------------
> and the djiango views.py code :
> 
>        def register_task(requst):
> """register the task"""
>         .................
> factory = pb.PBClientFactory()
> reactor.connectTCP("localhost", 8789, factory)
> d = factory.getRootObject()
> d.addCallback(lambda object: object.callRemote("echo", task))
> d.addCallback(lambda echo: 'server echoed: '+echo[0]+str(echo[1]))
> d.addErrback(lambda reason: 'error: '+str(reason.value))
> d.addCallback(util.println)
> d.addCallback(lambda _: reactor.stop())
> reactor.run()

That won't work. The reactor cannot be started more than once. It needs 
to be long-lived.





More information about the Twisted-Python mailing list