3

下面的代码:

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+CCTRL+停止龙卷风服务器PauseBreak,但Ctrl+C不会在 CMD 中停止它。

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

如何在windows中输入KeyboardInterrupt?

4

1 回答 1

3

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

于 2013-11-06T22:17:56.537 回答