Wie setze ich den Debug-Modus in Tornado?


13

Ich googelte und fand einen Hinweis, dass ich den Debug-Modus in Tornado so einstellen sollte, dass Dateien beim Update automatisch neu geladen werden. Aber ich habe keine genaue Zeichenfolge zum Einfügen gefunden. Ich habe verschiedene ähnliche Kombinationen ausprobiert, application.settings = {"Debug": True}aber es hilft nicht.


Ich denke, es sollte sein {"Debug": True}
Jondinham

Antworten:


11

Hier ist ein optimiertes Beispiel von der Tornado-Site:

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

2
"debug = True" muss sich außerhalb der Liste der Handler befinden, damit es funktioniert - wie folgt: "...], debug = True)"
Hemm

Guter Fang, ich hatte es geschrieben, ohne es zu überprüfen. Meine Antwort wurde entsprechend aktualisiert.
Jon Haddad

0

Für diejenigen, die die debug=TrueOption und die Verwendung von Tornado-Multiprozess mögen, wird der folgende Fehler ausgelöst:

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

Dies liegt daran, dass debug=Trueload IOLoopnicht zweimal geladen werden kann.

Nach der Dokumentation

Das Festlegen von debug = True entspricht autoreload = True, compiled_template_cache = False, static_hash_cache = False, serve_traceback = True.

Wenn Sie debug=TrueTornado verwenden, setzen Sie (aus Bequemlichkeitsgründen) auch ein anderes Flag, autoreload=Truedas nach Änderungen "sucht" und den Server neu lädt.

Die autoreloadOption ist derjenige, der nicht eingeschaltet werden kann , wenn mehrere Prozesse verwendet wird . Sie müssen es also wie folgt konfigurieren:

if __name__ == "__main__":
    application = tornado.web.Application([
        (r"/", MainHandler) 
    ], debug=True, autoreload=False)
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.