Tornado'da Hata Ayıklama modu nasıl ayarlanır?


13

Google'ı aradım ve Tornado'da hata ayıklama modunu ayarlamam gerektiğine dair bir ipucu buldum, böylece güncelleme sırasında dosyaları otomatik olarak yeniden yükleyebilir. Ama eklemek için tam bir dize bulamadım. Buna benzer farklı kombinasyonlar denedim application.settings = {"Debug": True}ama işe yaramıyor.


Bence "" hata ayıklama ": Doğru}
jondinham

Yanıtlar:


12

İşte kasırga sitesinden bir örnek:

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

2
"debug = True",
işleyebilmesi

İyi yakaladım, kontrol etmeden yazmıştım. Cevabımı buna göre güncelledi.
Jon Haddad

0

Gibi yapanlar için debug=Trueseçeneği ve aşağıdaki hata yükseltilecek Tornado-multiprocess kullanarak:

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()

Bunun nedeni debug=Trueyüktür IOLoopve iki kez yüklenemez.

Belgelere göre

Debug = True ayarı autoreload = True, compiled_template_cache = False, static_hash_cache = False, serve_traceback = True ile eşdeğerdir.

Yani debug=TrueTornado kullanırken (kolaylık sağlamak için) başka bir bayrak ayarlar: autoreload=Truehangi değişiklikleri izlemek ve sunucuyu yeniden yüklemek.

Bu autoreloadseçenek, çoklu işlem kullanılırken açılamayan seçenektir. Yani şu şekilde yapılandırmanız gerekir:

if __name__ == "__main__":
    application = tornado.web.Application([
        (r"/", MainHandler) 
    ], debug=True, autoreload=False)
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.