비동기 콜백 :이 실행이 기능 어딘가에 던져 경우를 제외하고 잘 작동토네이도 내가 동시에 실행되는 코드의 비동기 부분이 예외
@tornado.web.asynchronous
def execute(self, func, *args):
def callback(future):
try:
to_return = json.dumps(future.result())
self.write(to_return)
self.flush()
self.finish()
except:
error = error = self.get_exception()
self.set_status(500)
self.finish(json.dumps({"error": error))
EXECUTOR.submit(
partial(func, *args)
).add_done_callback(
lambda future: tornado.ioloop.IOLoop.instance().add_callback(
partial(callback, future)))
def get_exception(self):
exc_type, exc_obj, tb = sys.exc_info()
f = tb.tb_frame
lineno = tb.tb_lineno
filename = f.f_code.co_filename
linecache.checkcache(filename)
line = linecache.getline(filename, lineno, f.f_globals)
return {'error_msg': 'LINE {} "{}"): {}, {}'.format(filename, lineno, line.strip(), exc_obj, exc_obj)}
는 스택 추적 만 포인트 곳으로 돌아갑니다 그것은 코드에서 실제로 일어난 곳이 아니라 콜백 (즉, 미래가 실행 된 곳)에 던졌습니다.
원래 던져진 곳의 실제 기능에서 예외를 캡처 할 수 있습니까?
감사합니다. – jamborta