小编use*_*869的帖子

twisted - 通过KeyboardInterrupt中断回调

我正在使用Twisted在回调中的for循环中重复一个任务,但是如果用户通过Ctrl-C发出KeyboardInterrupt,则希望反应器在回调中打破循环(一).根据我测试的结果,反应器仅在回调结束时停止或处理中断.

有没有办法在回调运行过程中向回调或错误处理程序发送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()
Run Code Online (Sandbox Code Playgroud)

twisted reactor keyboardinterrupt

4
推荐指数
2
解决办法
5011
查看次数

标签 统计

keyboardinterrupt ×1

reactor ×1

twisted ×1