Tornado框架03-options和日誌

01-options

在前面的示例中我們都是將服務端口的參數寫死在程序中,很不靈活。
tornado爲我們提供了一個便捷的工具,tornado.options模塊——全局參數定義、存儲、轉換。

02-tornado.options.define()

用來定義options選項變量的方法,定義的變量可以在全局的tornado.options.options中獲取使用,傳入參數:

  • name 選項變量名,須保證全局唯一性,否則會報“Option ‘xxx’ already defined in …”的錯誤;

  • default 選項變量的默認值,如不傳默認爲None;

  • type 選項變量的類型,從命令行或配置文件導入參數的時候tornado會根據這個類型轉換輸入的值,轉換不成功時會報錯,可以是str、float、int、datetime、timedelta中的某個,若未設置則根據default的值自動推斷,若default也未設置,那麼不再進行轉換。可以通過利用設置type類型字段來過濾不正確的輸入。

  • multiple 選項變量的值是否可以爲多個,布爾類型,默認值爲False,如果multiple爲True,那麼設置選項變量時值與值之間用英文逗號分隔,而選項變量則是一個list列表(若默認值和輸入均未設置,則爲空列表[])。

  • help 選項變量的幫助提示信息,在命令行啓動tornado時,通過加入命令行參數 –help 可以查看所有選項變量的信息(注意,代碼中需要加入tornado.options.parse_command_line())。

03-tornado.options.options

全局的options對象,所有定義的選項變量都會作爲該對象的屬性。

04-tornado.options.parse_command_line()

轉換命令行參數,並將轉換後的值對應的設置到全局options對象相關屬性上。追加命令行參數的方式是–myoption=myvalue

import tornado.web
import tornado.ioloop
import tornado.httpserver
import tornado.options # 新導入的options模塊

tornado.options.define("port", default=8000, type=int, help="run server on the given port.") # 定義服務器監聽端口選項

class IndexHandler(tornado.web.RequestHandler):
    """主路由處理類"""
    def get(self):
        """對應http的get請求方式"""
        self.write("Hello Python Tornado!")

if __name__ == "__main__":
    tornado.options.parse_command_line()

    app = tornado.web.Application([
        (r"/", IndexHandler),
    ])

    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(tornado.options.options.port)
    tornado.ioloop.IOLoop.current().start()

05-tornado.options.parse_config_file(path)

從配置文件導入option,配置文件中的選項格式如下:

myoption = “myvalue” 
myotheroption = “myothervalue”

在使用prase_config_file()的時候,配置文件的書寫格式仍需要按照python的語法要求,其優勢是可以直接將配置文件的參數轉換設置到全局對象tornado.options.options中;然而,其不方便的地方在於需要在代碼中調用tornado.options.define()來定義選項,而且不支持字典類型,故而在實際應用中大都不使用這種方法。

在使用配置文件的時候,通常會新建一個python文件(如config.py),然後在裏面直接定義python類型的變量(可以是字典類型);在需要配置文件參數的地方,將config.py作爲模塊導入,並使用其中的變量參數。

06-日誌

當我們在代碼中調用parse_command_line()或者parse_config_file()的方法時,tornado會默認爲我們配置標準logging模塊,即默認開啓了日誌功能,並向標準輸出(屏幕)打印日誌信息。

如果想關閉tornado默認的日誌功能,可以在命令行中添加–logging=none 或者在代碼中執行如下操作:

from tornado.options import options, parse_command_line

options.logging = None
parse_command_line()
發佈了48 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章