摘要:上一篇文章第三章概念及應(yīng)用第三節(jié)客戶端編程下一篇文章第四章網(wǎng)站部署第二節(jié)靜態(tài)文件之前著重講解的編程知識點(diǎn),所有之前的例子都使用最簡單的啟動方式運(yùn)行。
上一篇文章:Python:Tornado 第三章:HTML5 WebSocket概念及應(yīng)用:第三節(jié):客戶端編程
下一篇文章:Python:Tornado 第四章:Tornado網(wǎng)站部署:第二節(jié):靜態(tài)文件
之前著重講解Tornado的編程知識點(diǎn),所有之前的例子都使用最簡單的IOLoop啟動方式運(yùn)行。本節(jié)學(xué)習(xí)如何優(yōu)化Tornado的運(yùn)行方式,以達(dá)到快捷、易用及資源利用優(yōu)化的目的。
到目前為止,本章通過如下方式啟動tornado程序:
def make_app(): return tornado.web.Application([ #此處寫入映射 ]) def main(): app=make_app() #建立Application對象 app.listen(8888) #設(shè)置監(jiān)聽端口 IOLoop.current().start() #啟動IOLoop if __name__ == "__main__": main()
通過這種方式啟動的程序一旦出錯,則只能通過Windows任務(wù)管理器或Linux命令行Kill掉Python進(jìn)行。因?yàn)檎{(diào)試需要頻繁地進(jìn)行:啟動→差錯→停止→排錯→重啟...的迭代流程,所以這樣簡單的方法并不利于程序調(diào)試,本節(jié)學(xué)習(xí)如何簡化調(diào)試流程。
1、自動加載通過向Application實(shí)例傳入?yún)?shù)debug=True,可以將程序以調(diào)試模式啟動,例如:
def make_app(): return tornado.web.Application([ #此處寫入映射 ], debug=True #調(diào)試模式 )
在這種模式下開發(fā)者可以獲得如下便利:
自動加載:對項(xiàng)目中任何*.py源文件的修改將導(dǎo)致程序自動重啟并加載修改后的代碼文件。這樣極大地簡化了開發(fā)者因?yàn)檎{(diào)試器需要頻繁重啟。
錯誤追溯:當(dāng)RequestHandler;處理用戶訪問出現(xiàn)異常時,系統(tǒng)的錯誤信息調(diào)用棧將被推送到瀏覽器中,使得調(diào)試者可以馬上查找錯誤的根源。
禁用模板緩存:在運(yùn)營環(huán)境中模板緩存能提高效率,但在調(diào)試期間占用了更多的系統(tǒng)資源,所以將其禁用有利于開發(fā)者進(jìn)行調(diào)試。
注意:在運(yùn)營環(huán)境中不要開啟Debug模式,這樣會增加網(wǎng)站被攻擊的危險。2、Ctrl+C退出機(jī)制
在默認(rèn)情況下Tornado的IOLoop不會響應(yīng)Linux控制臺的Ctrl+C命令,導(dǎo)致程序無法便捷地退出運(yùn)行。
要響應(yīng)Linux控制臺的Ctrl+C命令,則可以在運(yùn)行中捕獲KeyboardInterrupt異常并調(diào)用IOLoop.stop()函數(shù):
def main(): app=make_app() #建立Application對象 app.listen(8888) #設(shè)置監(jiān)聽端口 try: #啟動IOLoop tornado.ioloop.IOLoop.current().start() except KeyboardInterrupt: tornado.ioloop.IOLoop.current().stop() #此處執(zhí)行資源回收工作 print("Program exit!") if __name__ == "__main__": main()
這也在控制臺發(fā)送了Ctrl+C請求后,程序可有機(jī)會回收系統(tǒng)的其它資源并退出執(zhí)行。
注意:在Windows平臺上,產(chǎn)生KeyboardInterrupt中斷的方式是Ctrl+Pause
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44796.html
摘要:提供了兩種方式進(jìn)行配置靜態(tài)文件路徑與服務(wù)器本地路徑的關(guān)聯(lián)關(guān)系。通常這些靜態(tài)文件的目錄與網(wǎng)站的代碼文件有某種相對關(guān)聯(lián)關(guān)系,可以通過下面這樣的方法將該參數(shù)設(shè)置為相對路徑此處寫入映射即指定靜態(tài)目錄為本程序文件所在目錄的子目錄。 上一篇文章:Python:Tornado 第四章:Tornado網(wǎng)站部署:第一節(jié):調(diào)試模式下一篇文章:Python:Tornado 第四章:Tornado網(wǎng)站部署:第...
摘要:上一篇文章第三章概念及應(yīng)用第二節(jié)服務(wù)端編程下一篇文章第四章網(wǎng)站部署第一節(jié)調(diào)試模式由于是的標(biāo)準(zhǔn)之一,所以主流瀏覽器的客戶端編程語音已經(jīng)支持的客戶端編程。此事件發(fā)生在收到了來自服務(wù)器的消息時。此事件發(fā)生在通信過程中有任何錯誤時。 上一篇文章:Python:Tornado 第三章:HTML5 WebSocket概念及應(yīng)用:第二節(jié):服務(wù)端編程下一篇文章:Python:Tornado 第四章:T...
摘要:上一篇文章第四章網(wǎng)站部署第二節(jié)靜態(tài)文件后臺運(yùn)行一般調(diào)試過程中我們使用運(yùn)行網(wǎng)站,方便我們在命令行中看運(yùn)行狀況。默認(rèn)情況下,會監(jiān)控子進(jìn)程,并在任何程序意外終止時重生。配合實(shí)現(xiàn)多進(jìn)程在中添加接受命令行參數(shù)可在配置文件中添加使用代理 上一篇文章:Python:Tornado 第四章:Tornado網(wǎng)站部署:第二節(jié):靜態(tài)文件 1、后臺運(yùn)行 一般調(diào)試過程中我們使用python app.py運(yùn)行網(wǎng)...
摘要:上一篇文章第一章異步及協(xié)程基礎(chǔ)第三節(jié)協(xié)程下一篇文章第二章實(shí)戰(zhàn)演練開發(fā)網(wǎng)站第二節(jié)網(wǎng)站結(jié)構(gòu)路由解析實(shí)例瀏覽器輸入鏈接頁面顯示下面逐行解析上面的代碼做了些什么首先通過語句引入包中的和類。該對象的第一個餐食用于定義程序的路由映射。 上一篇文章:Python:Tornado 第一章:異步及協(xié)程基礎(chǔ):第三節(jié):協(xié)程下一篇文章:Python:Tornado 第二章:實(shí)戰(zhàn)演練:開發(fā)Tornado網(wǎng)站:第...
摘要:上一篇文章開篇下一篇文章第一章異步及協(xié)程基礎(chǔ)第二節(jié)關(guān)鍵字協(xié)程是種推薦的編程方式,使用協(xié)程可以開發(fā)出簡捷高效的異步處理代碼。同步操作,導(dǎo)致進(jìn)程阻塞,直到操作完成異步操作,不會導(dǎo)致請求進(jìn)程阻塞。 上一篇文章:Python:Tornado 開篇下一篇文章:Python:Tornado 第一章:異步及協(xié)程基礎(chǔ):第二節(jié):Python關(guān)鍵字yield 協(xié)程是Tornado種推薦的編程方式,使用協(xié)...
閱讀 2656·2023-04-26 00:07
閱讀 2439·2021-11-15 11:37
閱讀 650·2021-10-19 11:44
閱讀 2178·2021-09-22 15:56
閱讀 1735·2021-09-10 10:50
閱讀 1510·2021-08-18 10:21
閱讀 2578·2019-08-30 15:53
閱讀 1638·2019-08-30 11:11