3.如何開啓Tornado的調試模式 (副標題:方便調試與測試)

默認用Tornado寫程序,修改完代碼需要將文件上傳,然後重啓 Supervisord (supervisorctl reload),修改的程序才能生效。但這樣比較麻煩,因爲需要SSH到服務器進行重啓操作。Tornado自帶的調試模式可以讓我們輕鬆不少。

開啓調試模式也很簡單,只需要 import 一個模塊即可。

1 import tornado.autoreload

現在將修改的文件上傳之後,不需要再重啓,修改的結果就會顯示出來了。

另外也可以在 settings 加入 debug選項:

01 import tornado.httpserver
02 import tornado.ioloop
03 import tornado.options
04 import tornado.web
05  
06 settings = {'debug' True}
07  
08 define("debug",default=True,help="Debug Mode",type=bool)
09  
10 def main():
11     tornado.options.parse_command_line()
12     application = tornado.web.Application([
13         (r"/", MainHandler),
14         (r"/nowamagic/", NowaMagicHandler),
15     ],**settings)
16     http_server = tornado.httpserver.HTTPServer(application)
17     http_server.listen(options.port)
18     tornado.ioloop.IOLoop.instance().start()

Tornado 官方教程上的 settings 是這樣的:

01 settings = {
02     "cookie_secret""61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=",
03     "login_url""/login",
04     "xsrf_cookies"True,
05 }
06  
07 application = tornado.web.Application([
08     (r"/", MainHandler),
09     (r"/login", LoginHandler),
10 ], **settings)

當然也設置settings字典可以這樣:

1 settings = dict(
2     cookie_secret= "61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=",
3     login_url= "/login",
4     xsrf_cookies= True,
5 )

settings可以設置什麼?

01 #設置templates路徑:
02 template_path = os.path.join(os.path.dirname(__file__), "templates")
03  
04 #設置靜態文件解析路徑:
05 static_path = os.path.join(os.path.dirname(__file__), "static"),
06  
07 #設置防跨站請求攻擊:
08 xsrf_cookies = True,
09 #默認爲False,即不可防禦。
10  
11 #設置登陸路徑,未登陸用戶在操作時跳轉會用到這個參數:
12 login_url = "/login-do",
13 #默認爲@tornado.web.authenticated
14  
15 #設置調試模式:
16 debug = True,
17 #默認爲False,即不是調試模式。
18  
19 #設置cookie密鑰:
20 cookie_secret = "dskfhisdjklagkfdklag;lkjasdklgjkldsjaklgjkldsfksdklf"
21 #默認爲字符串"secure cookies"
22  
23 #設置是否自動編碼:在2.0以上需要設置此項來兼容您之前的APP
24 autoescape = None,
25 #不設置默認爲自動編碼。
26  
27 #設置template_loader,可以從獨立的路徑中導入template:
28 template_loader=utils.ZipLoader,
29 #其中utils爲自己定義的模塊,ZipLoader是tornado.template.BaseLoader的子類。
30  
31 #設置gzip壓縮:
32 gzip=True
33  
34 #設置靜態路徑頭部:
35 static_url_prefix = "/mystatic/",
36 #默認是"/static/"
37  
38 #設置靜態文件處理類:
39 static_handler_class = MyStaticFileHandler,
40 #默認是tornado.web.StaticFileHandler
41  
42 #設置靜態文件的參數:
43 static_handler_args = "key1":"value1""key2":"value2"  }
44 #默認爲空字典。
45  
46 #設置日誌處理函數
47 log_function = your_fun,
48 # 日誌處理函數your_fun,按照自己的意圖記錄日誌。

調試模式的缺點是:只感知.py文件的改變,模版的改變不會加載,有些特殊的錯誤,比如import的錯誤,就會直接讓服務下線,到時候還得手動重啓。還有就是調試模式和 HTTPServer 的多進程模式不兼容。在調試模式下,你必須將 HTTPServer.start 的參數設爲不大於 1 的數字。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章