1

我刚刚开始了一个使用 Tornado 和 asyncmongo 的项目。

我有一个带有异步方法的处理程序。在里面我正在向 mongo 查询一些单词:

@tornado.web.asynchronous
def get(self):
    word = self.get_argument('word', None)
    if not word:
        self.write('{}')
        self.finish()
    self.db.spanish_dict.find({'$or': [{'word': word}, {'stem': word}]},
                              callback=self._on_response)


def _on_response(self, response, error):
   # need to sort response by relevancy

在我的回调方法中,我需要原始单词来准确地对 mongo 结果进行排序。

我发现这篇文章用于functools.partial完成此任务,允许我将其他参数传递给回调方法

get我想知道在方法中设置实例属性并在其中访问它是否有任何不利影响_on_response谢谢你

@tornado.web.asynchronous
def get(self):
    word = self.get_argument('word', None)
    if not word:
        self.write('{}')
        self.finish()
    self.word = word
    self.db.spanish_dict.find({'$or': [{'word': word}, {'stem': word}]},
                              callback=self._on_response)


def _on_response(self, response, error):
   # need to sort response by relevancy
   # will self.word always be accurate?
   self.word
4

1 回答 1

1

使用 tornado.gen,您可以完全回避问题

http://www.tornadoweb.org/documentation/gen.html?highlight=tornado.gen#tornado.gen

于 2013-01-30T15:02:59.950 回答