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()

questionAnswers(2)

yourAnswerToTheQuestion