tornado基本使用一

1、tornado web程序編寫思路

1. 建立web應用實例對象,第一個初始化參數爲路由映射列表
2. 定義實現路由映射列表中的handler類
3. 建立服務器實例, 綁定服務器端口
4. 啓動當前線程的IOLoop

2、tornado.web

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()
相關文章
相關標籤/搜索