我知道自 5.0 以来,tornado 的 ioloop 是由 asyncio 处理的,实际上我使用 tornado.ioloop.IOloop.current()
得到的循环是一个 asyncio 循环默认情况下。我的问题是如何以正确的方式访问异步循环本身。例如,我想在asyncio循环上使用loop.create_future()
方法,但是tornado包装了循环并且它没有这个方法。
目前我所做的是,当我需要 asyncio 方法时,我只需调用 asyncio.get_event_loop()
(因为文档指出这两个循环确实是相同的)。我不确定这是正确的方法,因为现在我对具有不同接口(interface)的同一 ioloop 有不同的引用,并且我使用所需的方法。这有点困惑和令人困惑。
还有更好的办法吗?我可以告诉 Tornado 给我异步循环而不包装它吗?或者我可以使用 Tornado 创建的 IOloop
以某种方式访问这些方法吗?
编辑:
https://www.tornadoweb.org/en/stable/ioloop.html#module-tornado.ioloop这里声明如下:
Applications can use either the IOLoop interface or the underlying asyncio event loop directly
我对后者感兴趣,但找不到如何直接访问它的说明。
最佳答案
asyncio.get_event_loop()
是推荐的方法;无需使用(未记录的)asyncio_loop
属性。这就是所有非 Tornado 特定的异步代码获取事件循环的方式。
关于python - 在tornado的ioloop上使用asyncio方法(例如create_future),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59170848/