如何在龙卷风中设置调试模式?


13

我在Google上搜索后发现了一个提示,我应该在Tornado中设置调试模式,以便它可以在更新时自动重新加载文件。但是我没有找到要插入的确切字符串。我尝试了与此类似的不同组合,application.settings = {"Debug": True}但无济于事。


我认为应该是{“ debug”:True}
jondinham

Answers:


11

这是龙卷风网站上经过调整的示例:

if __name__ == "__main__":
    application = tornado.web.Application([
        (r"/", MainHandler) 
    ], debug=True)
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

2
“ debug = True”必须在处理程序列表之外才能起作用---像这样:“ ...],debug = True)”
Hemm 2012年

很好,我没有检查就写了。相应地更新了我的答案。
乔恩·哈达德

0

对于那些喜欢该debug=True选项并使用Tornado-multiprocess的人,将引发以下错误:

Traceback (most recent call last):
  File "./main.py", line 54, in <module>
    server.start(0)  # forks one process per cpu
  File "/Users/me/Library/Python/2.7/lib/python/site-packages/tornado/tcpserver.py", line 221, in start
    process.fork_processes(num_processes)
  File "/Users/me/Library/Python/2.7/lib/python/site-packages/tornado/process.py", line 130, in fork_processes
    raise RuntimeError("Cannot run in multiple processes: IOLoop instance "
RuntimeError: Cannot run in multiple processes: IOLoop instance has already been initialized. You cannot call IOLoop.instance() before calling start_processes()

这是因为无法debug=True加载IOLoop并且无法加载两次。

根据文档

设置debug = True等效于autoreload = True,compiled_template_cache = False,static_hash_cache = False,serve_traceback = True。

因此,在使用debug=TrueTornado时,还会(为了方便起见)设置另一个标志:autoreload=True“监视”更改并重新加载服务器。

autoreload选项是使用多进程时无法打开的选项。因此,您需要像这样配置它:

if __name__ == "__main__":
    application = tornado.web.Application([
        (r"/", MainHandler) 
    ], debug=True, autoreload=False)
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.