我刚刚使用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结果进行排序。
我发现this帖子使用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
答案 0 :(得分:1)
使用tornado.gen并完全回避问题
http://www.tornadoweb.org/documentation/gen.html?highlight=tornado.gen#tornado.gen