This has been driving me crazy for a while -- for some reason reactor.stop() in the _error errback in example below raises error.ReactorNotRunning. In order to stop the reactor, I have to do reactor.callWhenRunning(reactor.stop) (or I did reactor.callLater(0, ...) until I discovered callWhenRunning).
In the example, I bind to a low port to make sure error is triggered. #!/usr/local/bin/python3 from twisted.internet import reactor, defer, protocol from twisted.internet.protocol import Factory from twisted.internet.endpoints import TCP4ServerEndpoint def _port(port): print('got', port) def _error(err): print('got err', err) print('is reactor running?', reactor.running) print('is reactor running?', (lambda: reactor.running)()) reactor.stop() # reactor.callWhenRunning(reactor.stop) d = TCP4ServerEndpoint(reactor, 123).listen(Factory()) d.addCallback(_port) d.addErrback(_error) d.addErrback(print) reactor.run() OTOH, in the following example reactor.stop() is stoppig the reactor properly: #!/usr/local/bin/python3 from twisted.internet import reactor, defer def cb(res): print('running?', reactor.running) if res == 'bar': raise Exception() reactor.stop() def eb(err): print('running?', reactor.running) print(err) reactor.stop() d = defer.Deferred() d.addCallback(cb) d.addErrback(eb) #reactor.callWhenRunning(d.callback, 'foo') reactor.callWhenRunning(d.callback, 'bar') reactor.run() Any ideas? _______________________________________________ Twisted mailing list -- twisted@python.org To unsubscribe send an email to twisted-le...@python.org https://mail.python.org/mailman3/lists/twisted.python.org/ Message archived at https://mail.python.org/archives/list/twisted@python.org/message/XK6XURKCRX44TLIY4C3RT3HZV5WYDA6C/ Code of Conduct: https://twisted.org/conduct