Comment définir le mode de débogage dans Tornado?


13

J'ai googlé et trouvé un indice que je devrais définir le mode de débogage dans Tornado afin qu'il puisse recharger les fichiers automatiquement lors de la mise à jour. Mais je n'ai pas trouvé de chaîne exacte à insérer. J'ai essayé différentes combinaisons similaires à cela, application.settings = {"Debug": True}mais cela n'aide pas.


je pense que ça devrait être {"debug": True}
jondinham

Réponses:


11

Voici un exemple modifié du site de la tornade:

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

2
"debug = True" doit être en dehors de la liste des gestionnaires pour que cela fonctionne --- comme ceci: "...], debug = True)"
Hemm

Bonne prise, je l'avais écrit sans le vérifier. Mis à jour ma réponse en conséquence.
Jon Haddad

0

Pour ceux qui aiment l' debug=Trueoption et utilisent Tornado-multiprocess, l'erreur suivante sera générée:

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

En effet, debug=Truecharger IOLoopet ne peut pas être chargé deux fois.

Selon la documentation

La définition de debug = True est équivalente à autoreload = True, compiled_template_cache = False, static_hash_cache = False, serve_traceback = True.

Ainsi, lorsque vous utilisez debug=TrueTornado, vous définissez également (pour plus de commodité) un autre indicateur: autoreload=Truequi "surveille" les modifications et recharge le serveur.

L' autoreloadoption est celle qui ne peut pas être activée lors de l'utilisation de plusieurs processus. Vous devez donc le configurer comme suit:

if __name__ == "__main__":
    application = tornado.web.Application([
        (r"/", MainHandler) 
    ], debug=True, autoreload=False)
    application.listen(8888)
    tornado.ioloop.IOLoop.instance().start()
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.