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