0

最新文档中的Motor教程展示了如何通过以下方式获取多个文档:tornado.gen.couroutine

@tornado.gen.coroutine
def do_find():
    cursor = db.test_collection.find({'i': {'$lt': 5}})
    for document in (yield cursor.to_list(length=100)):
        print document

然后它同步演示输出:

IOLoop.current().run_sync(do_find)

如何更改此函数,以便可以从异步中调用它handler并返回文档列表?

4

1 回答 1

0

像这样:

class AdminHandler(tornado.web.RequestHandler):
  @tornado.gen.coroutine
  def get_users(self):
    cursor = self.mc.web_app.user.find()
    users = [user['email'] for user in (yield cursor.to_list(length=1000))]
    raise tornado.gen.Return(users)

  @tornado.gen.coroutine
  def get(self):
    self.xsrf_token
    users = yield self.get_users()
    self.render('main/index.html', users=users)
于 2015-05-30T16:56:30.457 回答