[Twisted-Python] reactor.callLater() or reactor.callFromThread() when sending msg just before quit

Itamar Turner-Trauring (aka Shtull-Trauring) itamar at itamarst.org
Tue Dec 8 08:20:24 MST 2009


On Tue, 2009-12-08 at 13:50 +0100, Gabriel Rossetti wrote:
> I have to send a message just before my service quits, but sometimes the 
> reactor quits before the msg is sent.
> I was wondering if I should user reactor.callLater like so :
...
> (which I don't really like), or use reactor.callFromThread like so :
...

Neither of these will necessarily work. Instead, you want to use a
shutdown hook:

reactor.addSystemEventTrigger("before", "shutdown", f)

when you do reactor.stop(), f will be called... and shutdown will be
delayed until the Deferred f returns is triggered. In your case, send
message, tell connection to close, and then stop reactor. If you make
sure the Deferred from f only gets callback()ed when connectionLost is
called you'll get behavior you want.





More information about the Twisted-Python mailing list