【发布时间】:2011-06-23 18:13:28
【问题描述】:
我正在尝试在 Tornado 的 RequestHandler 中实现 get_current_user,但在等待对我的数据库的异步调用时,我需要阻塞调用。使用@tornado.web.asynchronous 修饰调用将不起作用,因为无论哪种方式,get_current_user 方法都会在异步查询完成和查询回调执行之前返回。
例如:
class MyHandler(BaseHandler):
@tornado.web.asynchronous
@tornado.web.authenticated
def get(self):
self.write('example')
self.finish()
class BaseHandler(tornado.web.RequestHandler):
def get_current_user(self):
def query_cb(self, doc):
return doc or None
database.get(username='test', password='t3st', callback=query_cb)
@tornado.web.authenticated 调用 get_current_user,但总是收到“None”,因为 BaseHandler 没有时间响应。有没有办法,使用龙卷风,暂时阻止像上面这样的呼叫?
【问题讨论】:
标签: asynchronous tornado requesthandler