Вопрос о получении результата асинхронного запроса в сети Tornado - PullRequest
2 голосов
/ 07 апреля 2011

Привет, я знаю, что это распространенная проблема для пользователя, который не знаком с асинхронным методом .... Я хочу запросить базу данных с идентификатором пользователя, используя asyncmongo, чтобы проверить, вошел ли пользователь в систему, но, очевидно, это не работает ия не хочу использовать self.render в обратном вызове.

Спасибо за вашу помощь.

class MainPage (BaseHandler):

def get(self):

    if not self.current_user:
     ####  get no result here 
    .............

get_current_user с использованием функции asyncmongoМетод:

def get_current_user(self):
    user_id = self.get_secure_cookie("user")
    if not user_id: return None 
    self.db.users.find({'user_id': bson.ObjectId(str(user_id))}, limit=1, callback=self._on_response)

def _on_response(self, response, error):
    if error:
        raise tornado.web.HTTPError(500)
    how to return the value of response instead of self.render('template',response) ?

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011
0 голосов
/ 20 сентября 2012
def _on_response(self, response, error):
    if error:
        raise tornado.web.HTTPError(500)
    self.render(str(response))
...