витая - прерывание обратного вызова через KeyboardInterrupt

В настоящее время я повторяю задачу в цикле for внутри обратного вызова с использованием Twisted, но хотел бы, чтобы реактор прерывал цикл в обратном вызове (один), если пользователь выдает KeyboardInterrupt через Ctrl-C. Из того, что я проверил, реактор останавливается или обрабатывает прерывания только в конце обратного вызова.

Есть ли способ отправить KeyboardInterrupt в обратный вызов или обработчик ошибок в середине выполнения обратного вызова?

Ура,

Крис

#!/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()

Ответы на вопрос(2)

Ваш ответ на вопрос