3.如何开启Tornado的调试模式 (副标题:方便调试与测试)

来源:互联网 发布:石家庄众人网络靠谱吗 编辑:程序博客网 时间:2024/04/30 01:21

默认用Tornado写程序,修改完代码需要将文件上传,然后重启 Supervisord (supervisorctl reload),修改的程序才能生效。但这样比较麻烦,因为需要SSH到服务器进行重启操作。Tornado自带的调试模式可以让我们轻松不少。

开启调试模式也很简单,只需要 import 一个模块即可。

1import tornado.autoreload

现在将修改的文件上传之后,不需要再重启,修改的结果就会显示出来了。

另外也可以在 settings 加入 debug选项:

01import tornado.httpserver
02import tornado.ioloop
03import tornado.options
04import tornado.web
05 
06settings = {'debug' True}
07 
08define("debug",default=True,help="Debug Mode",type=bool)
09 
10def 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 是这样的:

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

当然也设置settings字典可以这样:

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

settings可以设置什么?

01#设置templates路径:
02template_path = os.path.join(os.path.dirname(__file__), "templates")
03 
04#设置静态文件解析路径:
05static_path = os.path.join(os.path.dirname(__file__), "static"),
06 
07#设置防跨站请求攻击:
08xsrf_cookies = True,
09#默认为False,即不可防御。
10 
11#设置登陆路径,未登陆用户在操作时跳转会用到这个参数:
12login_url = "/login-do",
13#默认为@tornado.web.authenticated
14 
15#设置调试模式:
16debug = True,
17#默认为False,即不是调试模式。
18 
19#设置cookie密钥:
20cookie_secret = "dskfhisdjklagkfdklag;lkjasdklgjkldsjaklgjkldsfksdklf"
21#默认为字符串"secure cookies"
22 
23#设置是否自动编码:在2.0以上需要设置此项来兼容您之前的APP
24autoescape = None,
25#不设置默认为自动编码。
26 
27#设置template_loader,可以从独立的路径中导入template:
28template_loader=utils.ZipLoader,
29#其中utils为自己定义的模块,ZipLoader是tornado.template.BaseLoader的子类。
30 
31#设置gzip压缩:
32gzip=True
33 
34#设置静态路径头部:
35static_url_prefix = "/mystatic/",
36#默认是"/static/"
37 
38#设置静态文件处理类:
39static_handler_class = MyStaticFileHandler,
40#默认是tornado.web.StaticFileHandler
41 
42#设置静态文件的参数:
43static_handler_args = "key1":"value1""key2":"value2"  }
44#默认为空字典。
45 
46#设置日志处理函数
47log_function = your_fun,
48# 日志处理函数your_fun,按照自己的意图记录日志。

调试模式的缺点是:只感知.py文件的改变,模版的改变不会加载,有些特殊的错误,比如import的错误,就会直接让服务下线,到时候还得手动重启。还有就是调试模式和 HTTPServer 的多进程模式不兼容。在调试模式下,你必须将 HTTPServer.start 的参数设为不大于 1 的数字。

0 0
原创粉丝点击