2016-12-06 64 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(每个框架的通用接口) –