On Fri, 29 May 2009 14:22:43 +0200, Thomas Jakobsen <[email protected]> wrote: >Hi > >It seems that things being deferredToThread continue to run even >though reactor.stop() is called.
Threads cannot be interrupted. They will run until they function they are running returns. > >Output from the example below is: > >stuff1 finished; stopping reactor >stuff2 finished > >Is there a way to abort the remaining execution of stuff2 in this >case? It would be handy if, say, some exception happens in in stuff1 >that causes the execution of the remaining stuff2 to be meaningless. You can make stuff2 cooperate with stuff1 so that it returns earlier. > [snip] > >def stuff1(): > time.sleep(2) > print "stuff1 finished; stopping reactor" > reactor.stop() Also, you're calling reactor.stop() in a non-reactor thread here. This is not allowed. You must call it in the reactor thread, along with almost every other API. Try reactor.callFromThread(reactor.stop), instead. Jean-Paul _______________________________________________ Twisted-Python mailing list [email protected] http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
