J'ai une partie du code asynchrone dans mes gestionnaires, j'ai besoin de faire cette partie comme méthode externe et d'exécuter à partir de différents gestionnaires, mais chaque méthode a un code asynchrone. Pouvez-vous m'aider?méthode asynchrone externe à l'intérieur de la méthode asynchrone
exemple simple:
#!/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
Il semble que l'utilisateur devrait avoir un prénom et un nom de famille est-il une raison pour laquelle ils sont divisés en 2 collections différentes? – dm03514