[英]Calling function from Tornado async
只是在這方面掙扎。 如果我有一個異步請求處理程序,在它執行期間調用其他執行某些操作的函數(例如異步數據庫查詢),然后他們自己調用“完成”,我是否必須將它們標記為異步? 因為如果應用程序的結構類似於示例,我會收到有關“完成”的多次調用的錯誤。 我想我會想念一些東西。
class MainHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
@gen.engine
def post(self):
#do some stuff even with mongo motor
self.handleRequest(bla)
@gen.engine
def handleRequest(self,bla):
#do things,use motor call other functions
self.finish(result)
是否所有功能都必須標記為異步? 謝謝
調用完成結束HTTP請求,請參閱docs 。 其他功能不應稱為'完成'
我想你想做這樣的事情。 請注意,有一個額外的參數'回調',它被添加到異步函數中:
@tornado.web.asynchronous
@gen.engine
def post(self):
query =''
response = yield tornado.gen.Task(
self.handleRequest,
query=query
)
result = response[0][0]
errors = response[1]['error']
# Do stuff with result
def handleRequest(self, callback, query):
self.motor['my_collection'].find(query, callback=callback)
有關詳細信息,請參閱tornado.gen文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.