【发布时间】:2020-03-28 22:48:53
【问题描述】:
我知道,由于 5.0 龙卷风的 ioloop 由 asyncio 处理,实际上我使用 tornado.ioloop.IOloop.current() 是默认情况下的循环是 asyncio 循环。我的问题是如何以适当的方式访问 asyncio 循环本身。例如我想在 asyncio 循环上使用 loop.create_future() 方法,但是 tornado 包装了循环并且它没有这个方法。
目前我所做的是当我需要异步方法时,我只需调用asyncio.get_event_loop()(因为文档指出这两个循环确实是相同的)。我不确定这是不是正确的方法,因为现在我对具有不同接口的同一个 ioloop 有不同的引用,我使用了需要的那个。这有点混乱和混乱。
有没有更好的方法?我可以告诉龙卷风给我异步循环而不包装它吗?或者我可以使用 tornado 创建的 IOloop 以某种方式访问这些方法吗?
编辑:
https://www.tornadoweb.org/en/stable/ioloop.html#module-tornado.ioloop 这里声明如下:
应用程序可以直接使用 IOLoop 接口或底层异步事件循环
我对后者感兴趣,但我找不到有关如何直接访问它的说明。
【问题讨论】:
-
你试过asyncio的顶级函数吗,比如
asyncio.ensure_future?事件循环通常为其有效负载发布。 -
在我提到的特定用例中(但我宁愿一般性地问这个问题)我必须创建一个 asyncio.Future 对象,并且 asyncio 的文档明确指出,要正确执行此操作,您需要调用 @987654328 @ 在循环上。 docs.python.org/3/library/…我错过了什么,是否有一个顶级方法可以在龙卷风中使用所有内容?
标签: python python-3.x tornado python-asyncio ioloop