Tornado初學(xué)篇

Tornado是一款由Python編寫的,相對(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客戶端,它被設(shè)計(jì)用來和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)單封裝,以方便常用讀寫操作
?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è)無阻塞HTTP服務(wù)器的實(shí)現(xiàn)
import tornado.ioloop#核心的I/O循環(huán)
import tornado.options#解析終端參數(shù)
import tornado.web#包含web框架的大部分主要功能,包含RequestHandler和Application兩個(gè)重要的類

#導(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ù)接收的類型int,用它來指定http監(jiān)聽的端口
define("port",default=8000,help="run on the given port",type=int)

#tornado的請(qǐng)求處理函數(shù)類,當(dāng)處理一個(gè)請(qǐng)求時(shí),會(huì)將這個(gè)類實(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ù),并將其寫入到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類的實(shí)例,并且handlers定義了根路徑的路由和處理函數(shù)之間的映射
    app=tornado.web.Application(handlers=[(r"/",IndexHandler)])
    #一旦Application對(duì)象被創(chuàng)建,將其傳遞給Tornado的HTTPServer對(duì)象,然后使用指定的端口進(jìn)行監(jiān)聽(通過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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容