Ich schrieb ein Programm, das eine Koroutine regelmäßig vom Haupt ioloop
wie folgt aufgerufen hat:Wie kann ich in Tornado Ausnahmen in einer von PeriodicCallback aufgerufenen Coroutine sehen?
from tornado import ioloop, web, gen, log
tornado.log.enable_pretty_printing()
import logging; logging.basicConfig()
@gen.coroutine
def callback():
print 'get ready for an error...'
raise Exception()
result = yield gen.Task(my_async_func)
l = ioloop.IOLoop.instance()
cb = ioloop.PeriodicCallback(callback, 1000, io_loop=l)
cb.start
l.start()
Der Ausgang I ist einfach zu bekommen:
$ python2 app.py
get ready for an error...
get ready for an error...
get ready for an error...
get ready for an error...
Die raise Exception()
ignoriert still! Wenn ich den Callback so ändere, dass er nur
ist, bekomme ich einen vollen Stack-Trace wie ich es erwarte (und brauche). Wie kann ich diese Stapelverfolgung während der Verwendung der Coroutine erhalten?
Um Ausnahmen zu behandeln gen.coroutine fängt "Exception" -Fehler. gen.engine mach das nicht. Siehe http://stackoverflow.com/a/23502625/1066801 – M07