【问题标题】:How to call extra async method in Tornado?如何在 Tornado 中调用额外的异步方法?
【发布时间】:2017-04-20 19:37:55
【问题描述】:

我想在 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)

但它会进入睡眠模式,我永远不会得到任何结果。

【问题讨论】:

    标签: asynchronous tornado python-3.5


    【解决方案1】:

    还有哪些图书馆?大多数异步函数都是为特定的事件循环(Tornado、asyncio、Twisted 等)编写的。除非您要求,否则不同的事件循环不会合作。您可能希望启用 Tornado/asyncio 与 tornado.platform.asyncio.AsyncIOMainLoop 的互操作性

    【讨论】:

    • 感谢您的回答。 AsyncIOMainLoop 我可以创建自己的库,可以与 Tornado 合作吗?
    • IOLoop 实现的选择取决于应用程序,而不是库。如果你想写一个库,你可以选择使用 tornado.ioloop.IOLoop 或 asyncio.EventLoop(每个框架的通用接口)
    猜你喜欢
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多