上一篇文章: Python:Tornado 第三章:HTML5 WebSocket概念及应用:第三节:客户端编程
下一篇文章: Python:Tornado 第四章:Tornado网站部署:第二节:静态文件
以前着重讲解Tornado的编程知识点,全部以前的例子都使用最简单的IOLoop启动方式运行。本节学习如何优化Tornado的运行方式,以达到快捷、易用及资源利用优化的目的。web
到目前为止,本章经过以下方式启动tornado程序:编程
def make_app(): return tornado.web.Application([ #此处写入映射 ]) def main(): app=make_app() #创建Application对象 app.listen(8888) #设置监听端口 IOLoop.current().start() #启动IOLoop if __name__ == '__main__': main()
经过这种方式启动的程序一旦出错,则只能经过Windows任务管理器或Linux命令行Kill掉Python进行。由于调试须要频繁地进行:启动→差错→中止→排错→重启...的迭代流程,因此这样简单的方法并不利于程序调试,本节学习如何简化调试流程。segmentfault
经过向Application实例传入参数debug=True,能够将程序以调试模式启动,例如:浏览器
def make_app(): return tornado.web.Application([ #此处写入映射 ], debug=True #调试模式 )
在这种模式下开发者能够得到以下便利:缓存
注意:在运营环境中不要开启Debug模式,这样会增长网站被攻击的危险。
在默认状况下Tornado的IOLoop不会响应Linux控制台的Ctrl+C命令,致使程序没法便捷地退出运行。app
要响应Linux控制台的Ctrl+C命令,则能够在运行中捕获KeyboardInterrupt异常并调用IOLoop.stop()函数:函数
def main(): app=make_app() #创建Application对象 app.listen(8888) #设置监听端口 try: #启动IOLoop tornado.ioloop.IOLoop.current().start() except KeyboardInterrupt: tornado.ioloop.IOLoop.current().stop() #此处执行资源回收工做 print("Program exit!") if __name__ == '__main__': main()
这也在控制台发送了Ctrl+C请求后,程序可有机会回收系统的其它资源并退出执行。tornado
注意:在Windows平台上,产生KeyboardInterrupt中断的方式是Ctrl+Pause