twisted - interromper retorno de chamada via KeyboardInterrupt
No momento, estou repetindo uma tarefa em um loop for dentro de um retorno de chamada usando o Twisted, mas gostaria que o reator quebre o loop no retorno de chamada (um) se o usuário emitir um KeyboardInterrupt via Ctrl-C. Pelo que testei, o reator apenas para ou processa interrupções no final do retorno de chamada.
Existe alguma maneira de enviar um KeyboardInterrupt ao retorno de chamada ou ao manipulador de erros no meio da execução do retorno de chamada?
Felicidades,
Chris
#!/usr/bin/env python
from twisted.internet import reactor, defer
def one(result):
print "Start one()"
for i in xrange(10000):
print i
print "End one()"
reactor.stop()
def oneErrorHandler(failure):
print failure
print "INTERRUPTING one()"
reactor.stop()
if __name__ == '__main__':
d = defer.Deferred()
d.addCallback(one)
d.addErrback(oneErrorHandler)
reactor.callLater(1, d.callback, 'result')
print "STARTING REACTOR..."
try:
reactor.run()
except KeyboardInterrupt:
print "Interrupted by keyboard. Exiting."
reactor.stop()