默认用Tornado写程序,修改完代码需要将文件上传,然后重启 Supervisord (supervisorctl reload),修改的程序才能生效。但这样比较麻烦,因为需要SSH到服务器进行重启操作。Tornado自带的调试模式可以让我们轻松不少。
开启调试模式也很简单,只需要 import 一个模块即可。
1 | import tornado.autoreload |
现在将修改的文件上传之后,不需要再重启,修改的结果就会显示出来了。
另外也可以在 settings 加入 debug选项:
01 | import tornado.httpserver |
03 | import tornado.options |
06 | settings = { 'debug' : True } |
08 | define( "debug" ,default = True , help = "Debug Mode" , type = bool ) |
11 | tornado.options.parse_command_line() |
12 | application = tornado.web.Application([ |
14 | (r "/nowamagic/" , NowaMagicHandler), |
16 | http_server = tornado.httpserver.HTTPServer(application) |
17 | http_server.listen(options.port) |
18 | tornado.ioloop.IOLoop.instance().start() |
Tornado 官方教程上的 settings 是这样的:
02 | "cookie_secret" : "61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=" , |
03 | "login_url" : "/login" , |
07 | application = tornado.web.Application([ |
09 | (r "/login" , LoginHandler), |
当然也设置settings字典可以这样:
2 | cookie_secret = "61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=" , |
settings可以设置什么?
02 | template_path = os.path.join(os.path.dirname(__file__), "templates" ) |
05 | static_path = os.path.join(os.path.dirname(__file__), "static" ), |
12 | login_url = "/login-do" , |
20 | cookie_secret = "dskfhisdjklagkfdklag;lkjasdklgjkldsjaklgjkldsfksdklf" |
28 | template_loader = utils.ZipLoader, |
35 | static_url_prefix = "/mystatic/" , |
39 | static_handler_class = MyStaticFileHandler, |
43 | static_handler_args = { "key1" : "value1" , "key2" : "value2" } |
47 | log_function = your_fun, |
调试模式的缺点是:只感知.py文件的改变,模版的改变不会加载,有些特殊的错误,比如import的错误,就会直接让服务下线,到时候还得手动重启。还有就是调试模式和 HTTPServer 的多进程模式不兼容。在调试模式下,你必须将 HTTPServer.start 的参数设为不大于 1 的数字。