¿Cómo configurar el modo de depuración en Tornado?


13

Busqué en Google y encontré una pista de que debería configurar el modo de depuración en Tornado para que pudiera volver a cargar archivos automáticamente en la actualización. Pero no encontré una cadena exacta para insertar. Intenté diferentes combinaciones similares a esta, application.settings = {"Debug": True}pero no ayuda.


creo que debería ser {"debug": True}
jondinham

Respuestas:


11

Aquí hay un ejemplo modificado del sitio del tornado:

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

2
"debug = True" tiene que estar fuera de la lista de controladores para que funcione --- así: "...], debug = True)"
Hemm

Buena captura, lo había escrito sin comprobarlo. Actualicé mi respuesta en consecuencia.
Jon Haddad

0

Para aquellos a quienes les gusta la debug=Trueopción y usan Tornado-multiprocess, se generará el siguiente error:

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

Esto se debe a la debug=Truecarga IOLoopy no se puede cargar dos veces.

De acuerdo con la documentación

Establecer debug = True es equivalente a autoreload = True, compiled_template_cache = False, static_hash_cache = False, serve_traceback = True.

Entonces, cuando se usa debug=TrueTornado, también establece (por conveniencia) otro indicador: autoreload=Trueque "vigila" los cambios y vuelve a cargar el servidor.

La autoreloadopción es la que no se puede activar cuando se utilizan procesos múltiples. Por lo tanto, debe configurarlo así:

if __name__ == "__main__":
    application = tornado.web.Application([
        (r"/", MainHandler) 
    ], debug=True, autoreload=False)
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.