2016-12-06 30 views
0

我想從其他圖書館龍捲風調用異步方法,像這樣:如何在Tornado中調用額外的異步方法?

class Database: 
    async def find_info(user_id): 
     pass 

class TestClass(tornado.web.RequestHandler): 
    def get(self, id): 
     db = Database() 
     user = yield db.find_info(user_id=id) 
     return self.write(user.username) 

但它進入類似睡眠模式,我永遠也不會得到任何結果。

回答

2

還有哪些庫?大多數異步函數都是爲特定的事件循環(Tornado,asyncio,Twisted等)編寫的。除非你讓他們去,否則不同的事件循環不會合作。您可能想要啓用Tornado/asyncio互操作性tornado.platform.asyncio.AsyncIOMainLoop

+0

感謝您的回答。通過「AsyncIOMainLoop」我可以創建自己的圖書館,可以與Tornado合作嗎? – Mortezaipo

+0

IOLoop實現的選擇取決於應用程序,而不是庫。如果你想編寫一個庫,你可以選擇使用tornado.ioloop.IOLoop或asyncio.EventLoop(每個框架的通用接口) –