Tornadoでデバッグモードを設定する方法


13

グーグルで検索して、更新時にファイルを自動的にリロードできるように、トルネードでデバッグモードを設定する必要があるというヒントを見つけました。しかし、挿入する正確な文字列が見つかりませんでした。これに似たさまざまな組み合わせを試しましapplication.settings = {"Debug": True}たが、役に立ちません。


{"debug":True}
-jondinham

回答:


11

以下は、竜巻のサイトからの調整された例です。

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

2
「デバッグ= True」を次のように---仕事にそれのためのハンドラのリストの外側である必要があります:「...]、デバッグ=真)」
HEMM

良いキャッチ、私はそれをチェックせずに書いていた。それに応じて私の答えを更新しました。
ジョンハダッド

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あり、2回ロードできないためです。

ドキュメントによると

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()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.