为什么在Tornado中执行yield关键字之后不执行finish语句



这是我的代码,问题是:
控制台输出"before, {"result" : "-1", "msg" : "Server error"}"
但它不输出"after, {"result" : "-1", "msg" : "Server error"}"
不执行self.finish(res)语句。

有人知道原因吗?我想让self.finish(res)执行。请帮帮我!

def get(self, param):
    try:
        do_something()
    except:
        res = '{"result" : "-1", "msg" : "Server error"}'
        logger.error('%s' % traceback.format_exc())
        print("before, %s" % res)
        yield tornado.gen.Task(self.captureException, exc_info=True)
        print("after, %s" % res)
    finally:
        do_something()
    self.finish(res)

如果使用yield gen.Task(),则需要将asnyc装饰器添加到方法中:

from tornado import gen, web
@web.asynchronous
@gen.engine
def get(self, param):
    # your get method

最新更新