当我在以下程序中阻止龙卷风^C
时按ioloop.start()
时,Python会立即退出并且不会引发KeyboardInterrupt(或任何其他异常)。发生了什么,我怎么能抓住^C
?
import tornado.ioloop
import tornado.web
ioloop = tornado.ioloop.IOLoop.instance()
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
# has no effect
# tornado.ioloop.PeriodicCallback(lambda:None, 1000).start()
print 'starting'
try:
ioloop.start()
except KeyboardInterrupt:
print '^C pressed'
finally:
print 'done'
输出:
$ /c/Python27x32/python test.py
starting
$
预期产出:
$ /c/Python27x32/python test.py
starting
^C pressed
done
$
我正在跑步:
答案 0 :(得分:0)
我已确定此问题是因为我在Windows上使用Git Bash控制台。当我使用常规命令提示符时,一切都按预期工作。我怀疑Git Bash正在抓住^ C并杀死这个过程。
答案 1 :(得分:-1)
Windows为控制台提供了不同的信号
试 Ctrl +中断 要么 Ctrl + D