ハンドラーに非同期コードの一部があります。この部分を外部メソッドとして作成し、別のハンドラーから実行する必要がありますが、すべてのメソッドに非同期コードがあります。手伝って頂けますか?
簡単な例:
#!/usr/bin/python
import asyncmongo
import tornado.web
class Handler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def get(self):
self.db = asyncmongo.Client(pool_id='mypool', host='localhost',
port=27107, dbname='mydb')
self.db.first_names.find_one({'user_id': 1 },
callback=self._on_response)
def _on_response(self, response, error):
first_name = response['first_name']
data = {
'first_name': first_name
}
# use processor
first_name_html = self.generate_html("firstname.html").generate(**data)
last_name_html = foo()
self.write(first_name_html + last_name_html)
self.finish()
# this part of code is wrong!
# I have question about it
@tornado.web.asynchronous
def foo(self):
self.db.last_names.find_one({'user_id': 1 },
callback=self._on_response_two)
def _on_response_two(self, response, error):
last_name = response['last_name']
data = {
'last_name': last_name
}
# use processor
last_name_html = self.generate_html("lastname.html").generate(**data)
return last_name_html