[server] 토네이도에서 디버그 모드를 설정하는 방법?

나는 구글 검색하고 업데이트시 파일을 자동으로 다시로드 할 수 있도록 토네이도에서 디버그 모드를 설정해야한다는 힌트를 발견했습니다. 그러나 삽입 할 정확한 문자열을 찾지 못했습니다. 나는 이것과 비슷한 다른 조합을 시도했지만 application.settings = {"Debug": True}도움이되지 않습니다.



답변

토네이도 사이트에서 조정 된 예는 다음과 같습니다.

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


답변

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, compile_template_cache = False, static_hash_cache = False, serve_traceback = True와 같습니다.

따라서 debug=True토네이도를 사용할 때 , 편의를 위해 또 다른 플래그를 설정 autoreload=True합니다.

autoreload옵션은 멀티 프로세스를 사용하는 경우에 설정 될 수없는 일이다. 따라서 다음과 같이 구성해야합니다.

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


답변