我們從tornado的一份檔案開始介紹輕量绷落、易擴(kuò)展的web界大佬
- 姓名:tornado
- 別名:FriendFeed 的 Web 服務(wù)器及其常用工具的開源版本
- 民族:反正不是中國
- 性別:不確認(rèn)
- 民族:反正不是漢族
- 職業(yè):Python界輕量級的web服務(wù)框架的幕后大老板苟耻、獨(dú)立董事
- 社會關(guān)系:
- 父親:Python
- 母親:Python
- 兒子:千千萬萬Python用戶
- 生卒:21世紀(jì)-永遠(yuǎn)
- 個(gè)人能力: 簡單吨枉、輕松的為Python的web服務(wù)開發(fā)者提供幫助桐款,能解決C10K問題。
1.1 tornado的安裝
忽略刀森,地球人都知道
1.2 tornado版hello world - 簡單的Web服務(wù)
首先認(rèn)識一下tornado是如何工作的杠览,這里看看業(yè)界語言最經(jīng)典的test,hello world問題:
1.2.1hello tornado
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
greeting = self.get_argument('greeting', 'Hello')
self.write(greeting + ', tornado world!')
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
- 啟動(dòng)服務(wù):python hello.py --port=8000
- 訪問服務(wù):
$ curl http://localhost:8000/
Hello, tornado world!
神奇的hello world就這樣出生了当宴,雖然談不上眉清目秀畜吊,但是簡單,不用懷胎十月户矢,痛苦分娩玲献。下面我們看看hello.py的剖腹產(chǎn)的視頻,看看這哥們的出生過程梯浪,已經(jīng)身體器官的構(gòu)成捌年。
我們一步步分解開看看,這個(gè)小伙子是怎么成人的:
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
- 導(dǎo)入tornado的必備模塊挂洛,雖然tornado有很多有用的模塊礼预,但是這四個(gè)是最重要的模塊,這就像嬰兒的四肢和大腦虏劲,為人類必備托酸。
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
- 這是tornado提供的一個(gè)很有用的模塊(tornado.options),是從命令行中讀取設(shè)置柒巫。我們這里讀取的是監(jiān)聽的http請求的端口励堡,我們看看define的工作方法:
- 如果命令行出現(xiàn)define設(shè)置的同名參數(shù),則這個(gè)參數(shù)成為全局的options的一個(gè)屬性
- 如果用戶在命令行運(yùn)行了--help堡掏,則打印出define指定的help的信息
- 如果用戶沒有指定相應(yīng)的數(shù)據(jù)值应结,則使用default
- type參數(shù)是指定port屬性的類型,若命令行設(shè)置的參數(shù)類型校驗(yàn)不通過泉唁,則拋出一個(gè)異常摊趾。
class IndexHandler(tornado.web.RequestHandler):
def get(self):
greeting = self.get_argument('greeting', 'Hello')
self.write(greeting + ', friendly user!')
- 這個(gè)函數(shù)是前端請求背后的男人币狠,即tornado前端請求的處理類,這個(gè)男人一個(gè)月的薪資決定了前端的請求是逛天貓的奢侈品旗艦店呢砾层,還是淘寶小攤。
- 當(dāng)處理一個(gè)請求時(shí)贱案,Tornado將這個(gè)類實(shí)例化肛炮,并調(diào)用與HTTP請求方法所對應(yīng)的方法,此處我們定義了一個(gè)get方法宝踪,也就是說此函數(shù)處理tornado的HTTP的get請求作出響應(yīng)侨糟。
未完待續(xù)