標籤:style blog http io ar color os sp 檔案
代碼執行過程及分析:
- 我們在主函數執行個體化Application類的時候,傳入參數"debug=True"(在python中,諸如‘ **settings ‘的參數類型允許傳入帶參數名的參數,其實就是傳入dictionary)
1 app = tornado.web.Application(2 handlers=[(r‘/‘, IndexHandler)],3 template_path=os.path.join(os.path.dirname(__file__), "templates"),4 static_path=os.path.join(os.path.dirname(__file__), "static"),5 debug=True6 )
- 執行個體化Application類的同時,將調用其建構函式,以下貼出與參數"debug=True"相關的代碼進行分析:
1 if self.settings.get(‘debug‘): 2 self.settings.setdefault(‘autoreload‘, True) 3 self.settings.setdefault(‘compiled_template_cache‘, False) 4 self.settings.setdefault(‘static_hash_cache‘, False) 5 self.settings.setdefault(‘serve_traceback‘, True)
由於傳入的debug值為True,將依次執行self.settings.get(‘debug‘)函數語句,此時設定‘autoreload‘的值為True, ‘compiled_template_cache‘的值為False, ‘static_hash_cache‘的值為False, ‘serve_traceback‘的值為True.
- autoreload模組實現自動重啟伺服器 autoreload被設定為“True”後, Application類的建構函式將繼續執行以下函數:
1 # Automatically reload modified modules2 if self.settings.get(‘autoreload‘):3 from tornado import autoreload4 autoreload.start()
此時伺服器嘗試重新啟動
4.
綜上而言,在對Application類執行個體化的時候,傳入"debug=True"參數將實現代碼的動態解釋,每次當.py檔案內容改變時,Tornado都是自動重啟伺服器,而我們重新整理頁面後也能看到新的調試效果,無需自己頻繁地開啟伺服器。
資料參考:http://www.tornadoweb.org/en/stable/web.html#tornado.web.Application
Application類如何通過debug參數實現auto-reload功能