[Twisted-Python] Re:how to pass on the connection failed or connection lost error
Jean-Paul Calderone
exarkun at divmod.com
Fri Mar 6 05:56:04 MST 2009
On Thu, 5 Mar 2009 15:49:31 -0800 (PST), khawar hasham <hasham_james_007 at yahoo.com> wrote:
>Hi,
>
>I tried to use this suggestion but I could not make it work.
>
>here is the test I am using
>
>in my application class
>def callSend(self, msg):
> plugin.send(msg)
>
>Now in plugin class
>def send(self, msg):
> print 'before call'
> threads.blockingCallFromThread(reactor, remotesend, msg)
> print 'after call'
>
>def handleError(self, error):
> error.raiseException()
>
>def remotesend(self, msg):
> deferred = defer.Deferred()
> reactor.connectTCP('localhost',9999,myfactory)
> deffered.addErrback(self.handleError)
> return deffered
>
>now myfactory class .. clientConnectionFailed
>def clientConnectionFailed(self, connector, reason):
> reason.raiseException()
>
>
>now the problem is, code has become synchronous as code is waiting after threads.blockingCallFromThread, how to fire the defer returned from 'remotesend'. Do i need to fire it or twisted will take care of it.
You probably need to fire it. You created it, so it's your responsibility.
I don't know when you want it to fire, though. What is it supposed to
represent?
>I think I can't refer this deferred object since it is being passed to threads.blockingCallFromThread function on which I have no control.
Not only that, but you can't do anything with it outside the reactor thread.
>
>any suggestions
>
What do you want to happen?
Jean-Paul
More information about the Twisted-Python
mailing list