Я написал программу, которая периодически вызывается сопрограммой coroutine из основного ioloop
следующим образом:
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()
Выход, который я получаю, просто:
$ python2 app.py
get ready for an error...
get ready for an error...
get ready for an error...
get ready for an error...
raise Exception()
молча игнорируется! Если я изменю обратный вызов, просто
def callback():
print 'get ready for an error...'
raise Exception()
Я получаю полную трассировку стека, как я ожидаю (и нуждаюсь). Как я могу получить эту трассировку стека при использовании сопрограммы?