上一篇文章: 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