在Windows中烧瓶龙卷风CTRL + C终止

时间:2013-11-06 07:54:23

标签: python windows python-2.7 flask tornado

代码如下:

from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop  


def start(app, port=8080):  
      http_server = HTTPServer(WSGIContainer(app))
      http_server.listen(port)
      try:
          IOLoop.instance().start()
      except KeyboardInterrupt:
          print "stop"
          IOLoop.instance().stop()

我想在Windows中使用 CTRL + C CTRL + PauseBreak 停止龙卷风服务器,但< kbd> Ctrl + C 不会在CMD中停止它。

Ctrl + PauseBreak 会停止CMD并终止python.exe,但不会显示“停止”。

如何在Windows中输入KeyboardInterrupt?

1 个答案:

答案 0 :(得分:2)

在Windows上,select()函数(IOLoop在内部使用)不可中断(http://www.velocityreviews.com/forums/t722370-windows-select-select-timeout-and-keyboardinterrupt.html)。最简单的解决方法是启动PeriodicCallback(它不需要做任何事情;只是一个空函数);当触发回调时,IOLoop将被唤醒并且将引发KeyboardInterrupt异常。