首页 > 代码库 > Application类如何通过debug参数实现auto-reload功能
Application类如何通过debug参数实现auto-reload功能
代码执行过程及分析:
- 我们在主函数实例化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功能
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。