Tornado初學(xué)篇

Tornado是一款由Python編寫(xiě)的,相對(duì)簡(jiǎn)單的非阻塞式Web服務(wù)器。和現(xiàn)在的主流Web服務(wù)器框架(包括大多數(shù) Python 的框架)有著明顯的區(qū)別:它是非阻塞式服務(wù)器舵稠,而且速度相當(dāng)快。Tornado每秒可以處理數(shù)以千計(jì)的連接,因此Tornado是實(shí)時(shí)Web服務(wù)的一個(gè)理想框架喧务。使用tornado可以構(gòu)建高性能的web應(yīng)用,例如facebook的社交服務(wù)friendfeed枉圃。

Tornado框架包含以下模塊:
?web - FriendFeed使用的基礎(chǔ)Web框架功茴,包含了Tornado的大多數(shù)重要的功能
?escape - XHTML, JSON, URL的編碼/解碼方法
?database - 對(duì)MySQLdb的簡(jiǎn)單封裝,使其更容易使用
?template - 基于Python的web模板系統(tǒng)
?httpclient - 非阻塞式HTTP客戶(hù)端孽亲,它被設(shè)計(jì)用來(lái)和web及httpserver協(xié)同工作
?auth - 第三方認(rèn)證的實(shí)現(xiàn)(包括Google OpenID/OAuth坎穿、Facebook Platform、Yahoo BBAuth返劲、FriendFeed OpenID/OAuth玲昧、Twitter OAuth)
?locale - 針對(duì)本地化和翻譯的支持
?options - 命令行和配置文件解析工具,針對(duì)服務(wù)器環(huán)境做了優(yōu)化
?httpserver - 服務(wù)于web模塊的一個(gè)非常簡(jiǎn)單的HTTP服務(wù)器的實(shí)現(xiàn)
?iostream - 對(duì)非阻塞式的socket的簡(jiǎn)單封裝篮绿,以方便常用讀寫(xiě)操作
?ioloop - 核心的 I/O 循環(huán)
這里推薦一篇關(guān)于tornado源碼分析的好文
http://kenby.iteye.com/blog/1159621

tornado孵延、PycURL以及 simplejson的安裝:

https://pypi.python.org/pypi/tornado/4.4.2#downloads
下載tornado-4.4.2.tar.gz
https://pypi.python.org/pypi/simplejson/#downloads
下載simplejson-3.10.0.tar.gz
2)安裝tornado
tar -xvzf tornado-4.4.2.tar.gz
cd tornado-4.4.2
python setup.py build
sudo python setup.py install
3)安裝 PycURL 以及 simplejson
sudo easy_install setuptools pycurl
tar -xvzf simplejson-3.10.0.tar.gz
cd simplejson-3.10.0
python setup.py build
sudo python setup.py install
安裝完后測(cè)試一下:

$ python
Python 2.7.10 (default, Oct 23 2015, 18:05:06) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tornado
>>> 

一個(gè)簡(jiǎn)單的tornado的例子:

# -*- coding: utf-8 -*-
import tornado.httpserver#一個(gè)無(wú)阻塞HTTP服務(wù)器的實(shí)現(xiàn)
import tornado.ioloop#核心的I/O循環(huán)
import tornado.options#解析終端參數(shù)
import tornado.web#包含web框架的大部分主要功能,包含RequestHandler和Application兩個(gè)重要的類(lèi)

#導(dǎo)入define亲配,optins這兩個(gè)模塊尘应,用于設(shè)置從讀取參數(shù)和設(shè)置默認(rèn)參數(shù)
from tornado.options import define,options
#define是添加了一個(gè)port參數(shù),默認(rèn)8000弃榨,幫助文檔菩收,以及這個(gè)參數(shù)接收的類(lèi)型int,用它來(lái)指定http監(jiān)聽(tīng)的端口
define("port",default=8000,help="run on the given port",type=int)

#tornado的請(qǐng)求處理函數(shù)類(lèi)鲸睛,當(dāng)處理一個(gè)請(qǐng)求時(shí)娜饵,會(huì)將這個(gè)類(lèi)實(shí)例化,并調(diào)取與HTTP請(qǐng)求的方式對(duì)應(yīng)的方法官辈,這個(gè)處理函數(shù)將對(duì)HTTP的GET請(qǐng)求作出相應(yīng)
class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        #以一個(gè)字符串作為函數(shù)的參數(shù)箱舞,并將其寫(xiě)入到HTTP響應(yīng)中
        self.write('Hello , This is Tornado!')

if __name__=="__main__":
    #應(yīng)用運(yùn)行的入口遍坟,解析命令行參數(shù)
    tornado.options.parse_command_line()
    #創(chuàng)建了一個(gè)Tornado的Application類(lèi)的實(shí)例,并且handlers定義了根路徑的路由和處理函數(shù)之間的映射
    app=tornado.web.Application(handlers=[(r"/",IndexHandler)])
    #一旦Application對(duì)象被創(chuàng)建晴股,將其傳遞給Tornado的HTTPServer對(duì)象愿伴,然后使用指定的端口進(jìn)行監(jiān)聽(tīng)(通過(guò)options對(duì)象取出。)
    #最后电湘,在程序準(zhǔn)備好接收HTTP請(qǐng)求后隔节,創(chuàng)建一個(gè)Tornado的IOLoop的實(shí)例
    http_server=tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

命令行運(yùn)行: python hello.py

$ python hello.py
[I 170327 11:30:13 web:1971] 200 GET / (127.0.0.1) 2.26ms

在瀏覽器輸入地址http://localhost:8000
屏幕上會(huì)輸出:
Hello , This is Tornado!

附:
tornado框架Github源碼--https://github.com/tornadoweb/tornado

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市寂呛,隨后出現(xiàn)的幾起案子怎诫,更是在濱河造成了極大的恐慌,老刑警劉巖贷痪,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幻妓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡劫拢,警方通過(guò)查閱死者的電腦和手機(jī)肉津,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)舱沧,“玉大人妹沙,你說(shuō)我怎么就攤上這事∈炖簦” “怎么了初烘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)分俯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)哆料,這世上最難降的妖魔是什么缸剪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮东亦,結(jié)果婚禮上杏节,老公的妹妹穿的比我還像新娘。我一直安慰自己典阵,他們只是感情好奋渔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著壮啊,像睡著了一般嫉鲸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歹啼,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天玄渗,我揣著相機(jī)與錄音座菠,去河邊找鬼。 笑死藤树,一個(gè)胖子當(dāng)著我的面吹牛浴滴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播岁钓,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼升略,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了屡限?” 一聲冷哼從身側(cè)響起品嚣,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎囚霸,沒(méi)想到半個(gè)月后腰根,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拓型,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年额嘿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劣挫。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡册养,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出压固,到底是詐尸還是另有隱情球拦,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布帐我,位于F島的核電站坎炼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拦键。R本人自食惡果不足惜谣光,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芬为。 院中可真熱鬧萄金,春花似錦、人聲如沸媚朦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)询张。三九已至孙乖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背的圆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工鼓拧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人越妈。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓季俩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親梅掠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子酌住,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個(gè) Awesome - XXX 系列...
    aimaile閱讀 26,478評(píng)論 6 427
  • GitHub 上有一個(gè) Awesome - XXX 系列的資源整理,資源非常豐富,涉及面非常廣阎抒。awesome-p...
    若與閱讀 18,643評(píng)論 4 418
  • 環(huán)境管理管理Python版本和環(huán)境的工具酪我。p–非常簡(jiǎn)單的交互式python版本管理工具。pyenv–簡(jiǎn)單的Pyth...
    MrHamster閱讀 3,792評(píng)論 1 61
  • 夜是那么靜謐 那么黑 那么柔情似水 那么想用言語(yǔ)去表達(dá) 我坐在冰冷的凳子上面 回憶往事 一幕幕 一串串 不由地打了...
    幾分秋意濃閱讀 277評(píng)論 1 0
  • 今天鄭州大幅度降溫且叁,從昨天的最高21-14煩到今天的13-5都哭。昨天北京也特別冷,因?yàn)榭吹綐蝾^老爸帶上了火車(chē)頭帽子逞带,...
    咚咚樹(shù)閱讀 114評(píng)論 0 0