我們從tornado的一份檔案開始介紹輕量、易擴(kuò)展的web界大佬
- 姓名:tornado
- 別名:FriendFeed 的 Web 服務(wù)器及其常用工具的開源版本
- 民族:反正不是中國
- 性別:不確認(rèn)
- 民族:反正不是漢族
- 職業(yè):Python界輕量級的web服務(wù)框架的幕后大老板、獨立董事
- 社會關(guān)系:
- 父親:Python
- 母親:Python
- 兒子:千千萬萬Python用戶
- 生卒:21世紀(jì)-永遠(yuǎn)
- 個人能力: 簡單、輕松的為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()
- 啟動服務(wù):python hello.py --port=8000
- 訪問服務(wù):
$ curl http://localhost:8000/
Hello, tornado world!
神奇的hello world就這樣出生了,雖然談不上眉清目秀,但是簡單,不用懷胎十月,痛苦分娩。下面我們看看hello.py的剖腹產(chǎn)的視頻,看看這哥們的出生過程,已經(jīng)身體器官的構(gòu)成。
我們一步步分解開看看,這個小伙子是怎么成人的:
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
- 導(dǎo)入tornado的必備模塊,雖然tornado有很多有用的模塊,但是這四個是最重要的模塊,這就像嬰兒的四肢和大腦,為人類必備。
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
- 這是tornado提供的一個很有用的模塊(tornado.options),是從命令行中讀取設(shè)置。我們這里讀取的是監(jiān)聽的http請求的端口,我們看看define的工作方法:
- 如果命令行出現(xiàn)define設(shè)置的同名參數(shù),則這個參數(shù)成為全局的options的一個屬性
- 如果用戶在命令行運(yùn)行了--help,則打印出define指定的help的信息
- 如果用戶沒有指定相應(yīng)的數(shù)據(jù)值,則使用default
- type參數(shù)是指定port屬性的類型,若命令行設(shè)置的參數(shù)類型校驗不通過,則拋出一個異常。
class IndexHandler(tornado.web.RequestHandler):
def get(self):
greeting = self.get_argument('greeting', 'Hello')
self.write(greeting + ', friendly user!')
- 這個函數(shù)是前端請求背后的男人,即tornado前端請求的處理類,這個男人一個月的薪資決定了前端的請求是逛天貓的奢侈品旗艦店呢,還是淘寶小攤。
- 當(dāng)處理一個請求時,Tornado將這個類實例化,并調(diào)用與HTTP請求方法所對應(yīng)的方法,此處我們定義了一個get方法,也就是說此函數(shù)處理tornado的HTTP的get請求作出響應(yīng)。
未完待續(xù)