Tornado Application的實(shí)現(xiàn)
Application
-settings
我們?cè)趧?chuàng)建tornado.web.Application的對(duì)象時(shí),傳入了第一個(gè)參數(shù)——路由映射列表。實(shí)際上Application類的構(gòu)造函數(shù)還接收很多關(guān)于tornado web應(yīng)用的配置參數(shù)。
我們先來(lái)看一個(gè)參數(shù):
debug,設(shè)置tornado是否工作在調(diào)試模式,默認(rèn)為False即工作在生產(chǎn)模式。當(dāng)設(shè)置debug=True 后,tornado會(huì)工作在調(diào)試/開發(fā)模式,在此種模式下,tornado為方便我們開發(fā)而提供了幾種特性:
- 自動(dòng)重啟,tornado應(yīng)用會(huì)監(jiān)控我們的源代碼文件,當(dāng)有改動(dòng)保存后便會(huì)重啟程序,這可以減少我們手動(dòng)重啟程序的次數(shù)。需要注意的是,一旦我們保存的更改有錯(cuò)誤,自動(dòng)重啟會(huì)導(dǎo)致程序報(bào)錯(cuò)而退出,從而需要我們保存修正錯(cuò)誤后手動(dòng)啟動(dòng)程序。這一特性也可單獨(dú)通過(guò)autoreload=True設(shè)置;
- 取消緩存編譯的模板,可以單獨(dú)通過(guò)compiled_template_cache=False來(lái)設(shè)置;
- 取消緩存靜態(tài)文件hash值,可以單獨(dú)通過(guò)static_hash_cache=False來(lái)設(shè)置;
- 提供追蹤信息,當(dāng)RequestHandler或者其子類拋出一個(gè)異常而未被捕獲后,會(huì)生成一個(gè)包含追蹤信息的頁(yè)面,可以單獨(dú)通過(guò)serve_traceback=True來(lái)設(shè)置。
使用debug參數(shù)的方法:
import tornado.web app = tornado.web.Application([], debug=True)
-路由映射
先前我們?cè)跇?gòu)建路由映射列表的時(shí)候,使用的是二元元組,如:
[(r"/", IndexHandler),]
對(duì)于這個(gè)映射列表中的路由,實(shí)際上還可以傳入多個(gè)信息,如:
[ (r"/", Indexhandler), (r"/cpp", ItcastHandler, {"subject":"c++"}), url(r"/python", ItcastHandler, {"subject":"python"}, name="python_url") ]
對(duì)于路由中的字典,會(huì)傳入到對(duì)應(yīng)的RequestHandler的initialize()方法中:
from tornado.web import RequestHandler class ItcastHandler(RequestHandler): def initialize(self, subject): self.subject = subject def get(self): self.write(self.subject)
對(duì)于路由中的name字段,注意此時(shí)不能再使用元組,而應(yīng)使用tornado.web.url來(lái)構(gòu)建。name是給該路由起一個(gè)名字,可以通過(guò)調(diào)用RequestHandler.reverse_url(name)來(lái)獲取該名子對(duì)應(yīng)的url。
# coding:utf-8 import tornado.web import tornado.ioloop import tornado.httpserver import tornado.options from tornado.options import options, define from tornado.web import url, RequestHandler define("port", default=8000, type=int, help="run server on the given port.") class IndexHandler(RequestHandler): def get(self): python_url = self.reverse_url("python_url") self.write('<a href="%s" rel="external nofollow" >itcast</a>' % python_url) class ItcastHandler(RequestHandler): def initialize(self, subject): self.subject = subject def get(self): self.write(self.subject) if __name__ == "__main__": tornado.options.parse_command_line() app = tornado.web.Application([ (r"/", Indexhandler), (r"/cpp", ItcastHandler, {"subject":"c++"}), url(r"/python", ItcastHandler, {"subject":"python"}, name="python_url") ], debug = True) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.current().start()
到此這篇關(guān)于Tornado Application的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Tornado Application內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
matplotlib jupyter notebook 圖像可視化 plt show操作
這篇文章主要介紹了matplotlib jupyter notebook 圖像可視化 plt show操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04基于Python詞云分析政府工作報(bào)告關(guān)鍵詞
這篇文章主要介紹了基于Python詞云分析政府工作報(bào)告關(guān)鍵詞,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06詳解Django中異步任務(wù)之django-celery
這篇文章主要介紹了詳解Django中異步任務(wù)之django-celery,本文通過(guò)場(chǎng)景分析實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11Python下使用Trackbar實(shí)現(xiàn)繪圖板
這篇文章主要為大家詳細(xì)介紹了Python下使用Trackbar實(shí)現(xiàn)繪圖板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10Python 抓取數(shù)據(jù)存儲(chǔ)到Redis中的操作
這篇文章主要介紹了Python 抓取數(shù)據(jù)存儲(chǔ)到Redis中的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07Windows下安裝Django框架的方法簡(jiǎn)明教程
這篇文章主要介紹了Windows下安裝Django框架的方法,簡(jiǎn)單分析了django框架的下載、安裝、設(shè)置等步驟與相關(guān)操作技巧,需要的朋友可以參考下2018-03-03vscode搭建之python?Django環(huán)境配置方式
這篇文章主要介紹了vscode搭建之python?Django環(huán)境配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01