[Twisted-Python] IPushProducer - medium volume streaming

Christopher Armstrong radix at twistedmatrix.com
Mon Oct 29 10:57:09 EDT 2007


On 10/29/07, Rutt, Benjamin <Benjamin.Rutt at gs.com> wrote:
> I'm still puzzled how exactly
> 'reactor.callFromThread(self.transport.writeSomeData(...))' gets routed
> to the right client when called from my function.  How does twisted know
> which client that message is going to?  After all, it calls it from the
> main reactor loop.  i.e. what state does it use to get this right?

"self.transport" is associated with the particular connection.

Also, there are a couple of other things wrong about your snippet:

1. use "write", not "writeSomeData". writeSomeData is an internal
implementation detail.

2. You're actually calling writeSomeData and passing the *result* of
that to callFromThread. That's wrong; you need to pass a callable and
its arguments to callFromThread. So instead of
reactor.callFromThread(foo(a, b)), you write
reactor.callFromThread(foo, a, b). That means you should ultimately be
using::

reactor.callFromThread(self.transport.write, data)

-- 
Christopher Armstrong
International Man of Twistery
http://radix.twistedmatrix.com/
http://twistedmatrix.com/
http://canonical.com/




More information about the Twisted-Python mailing list