[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

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

Christopher Armstrong
International Man of Twistery

More information about the Twisted-Python mailing list