Tornado——入門基礎(二)內置服務器

一:tornado內置服務器

內置服務器在編程操作過程中,通過listen()監聽一個端口,然后通過IOLoop對象進行了事件輪詢監聽處理

二:分析內置服務器底層操作代碼(查看底層代碼)

定義一個web application為app

  • app.listen(8000)#底層操作的方式:主要封裝了將項目部署到服務器的操作
  • server = HTTPServer(app)#部署項目app到服務器
    server.listen(8000)#監聽8000端口--單進程的的實現模式
  • server =HTTPServer(app)#部署項目,跟單進程沒有關系
    server.bind(8000)#綁定8000端口
    server.start()#創建多進程的核心操作步驟
  1. 拓展:
    查看底層操作代碼可知(了解,不推薦使用)server.start(none/0):表示根據當前運行的硬件主機CPU的核心數量創建對應的多個進程
    server.start(1/):默認值,表示當前進程中直接運行服務器,默認為單進程
    server.start(>1):按照指定的數量創建多個進程
  1. 推薦:
    tornado默認單進程單線程的運行模式,當然也推薦多進程運行
    通過手工控制多進程運行,不同的進程之間相互獨立!
  • 手工多進程操作方式
    通過define()定義端口sport作為一個變量
    eg:define(‘port’,default=8000)#定義變量名字為port 默認端口為8000
    通過parse_command_line()將這個變量作為命令行可以接受的參數選項
  • 接受命令行指定的參數
    程序運行時可以接受命令行參數數值,就可以在運行一個程序是,指定其使用參數中包含的數據值--端口
    eg:
    python demo01.py --port==8000
    python demo01.py --port==8000

三:小結

  • 話不多說,直接來干貨——一個應用程序代碼
from tornado.web import RequestHandler, Application
from tornado.ioloop import IOLoop
from tornado.options import define, options, parse_command_line
from tornado.httpserver import HTTPServer

#定義變量
define('port', default=8088, help='this is well fly')


#定義視圖類
class IndexHandler(RequestHandler):

    #重寫get方法
    def get(self, *args, **kwargs):
        self.write('i am tornado')


#程序入口
if __name__ == '__main__':

    #開始接受監聽命令行參數數據,命令行參數數據必須通過define指定
    parse_command_line()

    #構建web Application
    app = Application([(r'/', IndexHandler),
                       ])

    #項目部署到server
    server = HTTPServer(app)
    server.bind(options.port)
    server.start()

    #啟動輪詢監聽
    IOLoop.current().start()

未完待續......

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容