[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