Fw: [Twisted-Python] Different behavior under Windows and Linux

Itamar Shtull-Trauring itamar at itamarst.org
Wed Jan 2 09:06:54 EST 2008


On Wed, 2008-01-02 at 15:18 +0300, W K wrote:
> 		
>         thread.start_new_thread(self.send, ())
>         reactor.connectTCP(self.host, self.port, self)

You can't call Twisted APIs from threads. This will fail in a variety of
fun ways, as you can see.

Either use reactor.callFromThread(self.connector.sendMessage, data), or
use deferToThread to run your non-Twisted computation in a thread and
then addCallback your Twisted calls. Or, best of all, don't use threads
at all: they're almost always unnecessary when using Twisted. You
probably want to use twisted.internet.task.LoopingCall to do what you're
currently doing.





More information about the Twisted-Python mailing list