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

Reply via email to