1. 建立web應用實例對象,第一個初始化參數爲路由映射列表 2. 定義實現路由映射列表中的handler類 3. 建立服務器實例, 綁定服務器端口 4. 啓動當前線程的IOLoop
1.RequestHandler:
封裝了對應一個請求的全部信息和方法,write(響應信息)就是寫響應信息的一個方法;對應每一種http請求方式(get、post等),把對應的處理邏輯寫進同名的函數名方法裏面(如對應get請求方式,就將對應的處理邏輯寫在get()方法中),當沒有對應請求方式的成員方法時,會返回「405: Method Not Allowed」錯誤。python
2.Application:linux
tarnado web框架的核心應用類,是與服務器對接的接口,裏面保存了路由信息表,裏面保存了路由信息表,其初始化接收的第一個參數就是一個路由信息映射元組的列表;其listen(端口)方法用來建立一個http服務器實例,並綁定到給的端口(注意:此時服務器並未開啓監聽)web
3.tornado.ioloop服務器
(1)tornado的核心io循環模塊,封裝了linux的epoll和BSD的kqueue,tornado高性能的基石app
(2)epoll原理框架
(3)IOLoop.current(): 返回當前線程的IOLoop實例。函數
(4)IOLoop.start(): 啓動IOLoop實例的IO循環,同時服務器監聽被打開。tornado
4.tornado.httpserveroop
實例:post
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Irving # 一個簡單的tornado web # 引用對應的tornado包 from tornado.web import Application, RequestHandler from tornado.ioloop import IOLoop from tornado.httpserver import HTTPServer class IndexHandler(RequestHandler): def get(self): self.write("hello world!") if __name__ == '__main__': # 建立一個app應用 app = Application([('/', IndexHandler)]) # applisten('8000') # 爲應用建立一個http服務 http_server = HTTPServer(app) # 綁定對應的端口號 http_server.listen(8000) # 開啓多個tornado進程 # http_server.bind(8000) # http_server.start(4) IOLoop.current().start()
5.tornado.options
(1)tornado.options模塊 -- 全局參數定義、存儲、轉換
(2)tornado.options.define()
1. def define(name, default=None, type=None, help=None, metavar=None, multiple=False, group=None, callback=None)
2. name 選項變量名,須保證全局惟一性,不然會報「Option 'xxx' already defined in ...」的錯誤
3. default 選項變量的默認值,如不傳默認爲None
4. type 選項變量的類型,轉換不成功時會報錯,能夠是str、float、int、datetime、timedelta中的某個,若未設置則根據default的值自動推斷,若default也未設置,那麼再也不進行轉換。能夠經過利用設置type類型字段來過濾不正確的輸入。
5. multiple 選項變量的值是否能夠爲多個,布爾類型,默認值爲False,若是multiple爲True,那麼設置選項變量時值與值之間用英文逗號分隔,而選項變量則是一個list列表(若默認值和輸入均未設置,則爲空列表[])。
6. help 選項變量的幫助提示信息,在命令行啓動tornado時,--help 能夠查看全部選項變量的信息(注意,代碼中須要加入tornado.options.parse_command_line())。
(3)tornado.options.options
全局options對象,全部定義的選項變量都會做爲該對象的屬性
(4)tornado.options.parse_command_line()
進行初始化
(5)tornado.options.parse_config_file(path)
(5)實例
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Irving # 一個簡單的tornado web # 引用對應的tornado包 from tornado.web import Application, RequestHandler from tornado.ioloop import IOLoop from tornado.httpserver import HTTPServer import tornado.options tornado.options.define("port", type=int, default=8000, help="端口號") class IndexHandler(RequestHandler): def get(self): self.write("hello world!") if __name__ == '__main__': tornado.options.parse_command_line() # 建立一個app應用 app = Application([('/', IndexHandler)]) # applisten('8000') # 爲應用建立一個http服務 http_server = HTTPServer(app) # 綁定對應的端口號 http_server.listen(tornado.options.options.port) # 開啓多個tornado進程 # http_server.bind(8000) # http_server.start(4) IOLoop.current().start()