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