Come impostare la modalità Debug in Tornado?


13

Ho cercato su Google e ho trovato un suggerimento che avrei dovuto impostare la modalità debug in Tornado in modo che potesse ricaricare i file automaticamente all'aggiornamento. Ma non ho trovato una stringa esatta da inserire. Ho provato diverse combinazioni simili a questa, application.settings = {"Debug": True}ma non aiuta.


penso che dovrebbe essere {"debug": True}
jondinham

Risposte:


11

Ecco un esempio ottimizzato dal sito di tornado:

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

2
"debug = True" deve essere al di fuori dell'elenco dei gestori affinché funzioni --- in questo modo: "...], debug = True)"
Hemm

Buona cattura, l'avevo scritto senza controllarlo. Aggiornato di conseguenza la mia risposta.
Jon Haddad,

0

Per coloro a cui piace l' debug=Trueopzione e l'utilizzo di Tornado-multiprocess verrà generato il seguente errore:

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

Questo perché debug=Truecaricare IOLoope non può essere caricato due volte.

Secondo la documentazione

L'impostazione di debug = True equivale a autoreload = True, compiled_template_cache = False, static_hash_cache = False, serve_traceback = True.

Quindi quando si utilizza debug=TrueTornado imposta anche (per comodità) un altro flag: autoreload=Trueche "osserva" le modifiche e ricarica il server.

L' autoreloadopzione è quella che non può essere attivata quando si utilizza il multi-processo. Quindi è necessario configurarlo in questo modo:

if __name__ == "__main__":
    application = tornado.web.Application([
        (r"/", MainHandler) 
    ], debug=True, autoreload=False)
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.