1

当我在以下程序中^C阻止龙卷风时按下时,Python 会立即退出,并且不会引发 KeyboardInterrupt(或任何其他异常)。ioloop.start()发生了什么事,我怎么能抓住^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

$

我在跑:

  • 视窗 8.0 x64,
  • Python 2.7.6(默认,2013 年 11 月 10 日,19:24:18)[MSC v.1500 32 位(英特尔)] 在 win32 上
  • 龙卷风==3.2
4

2 回答 2

0

我确定这个问题是因为我在 Windows 上使用 Git Bash 控制台。当我使用常规命令提示符时,一切都按预期工作。我怀疑 Git Bash 正在捕获 ^C 并终止该进程。

于 2014-02-16T08:30:06.293 回答
-1

Windows 有不同的控制台信号

尝试 Ctrl + break 或 Ctrl + D

于 2014-02-16T14:46:39.990 回答