tornado.platform.asyncio --- asyncio 与 Tornado 之间的桥梁

asyncio 模块和Tornado IOLoop 之间的桥梁。

3.2 新版功能.

此模块将Tornado与 asyncio python 3.4中引入的模块。这使得在同一事件循环上组合两个库成为可能。

5.0 版后已移除: 当此模块中的代码仍在使用时,当 asyncio 是可用的,因此应用程序不再需要直接引用此模块。

注解

Tornado设计为使用基于选择器的事件循环。在Windows上,基于proactor的事件循环自python3.8以来一直是默认的,通过运行 select 在另一条线上。配置 asyncio 使用选择器事件循环可以提高Tornado的性能(但可能会降低其他 asyncio -在同一进程中基于库)。

class tornado.platform.asyncio.AsyncIOMainLoop(*args: Any, **kwargs: Any)[源代码]

AsyncIOMainLoop 创建一个 IOLoop 对应于电流 asyncio 事件循环(即 asyncio.get_event_loop()

5.0 版后已移除: 现在在适当的时候自动使用;不再需要直接引用这个类。

在 5.0 版更改: 关闭一个 AsyncIOMainLoop 现在关闭底层的异步循环。

class tornado.platform.asyncio.AsyncIOLoop(*args: Any, **kwargs: Any)[源代码]

AsyncIOLoop 是一个 IOLoop 运行在一个 asyncio 事件循环。这个类遵循通常的Tornado语义来创建新的 IOLoops ;这些循环不一定与 asyncio 默认事件循环。

AsyncIOLoop 创建新的 asyncio.EventLoop ;可以使用 asyncio_loop 属性。

在 5.0 版更改: 当一个 AsyncIOLoop 变成电流 IOLoop ,它还设置当前 asyncio 事件循环。

5.0 版后已移除: 现在在适当的时候自动使用;不再需要直接引用这个类。

tornado.platform.asyncio.to_tornado_future(asyncio_future: _asyncio.Future) _asyncio.Future[源代码]

转换一个 asyncio.Future 到A tornado.concurrent.Future .

4.1 新版功能.

5.0 版后已移除: Tornado Futures 已与合并 asyncio.Future ,所以这个方法现在是不可操作的。

tornado.platform.asyncio.to_asyncio_future(tornado_future: _asyncio.Future) _asyncio.Future[源代码]

将 Tornado 可移动对象转换为 asyncio.Future .

4.1 新版功能.

在 4.3 版更改: 现在接受任何可触摸的物体,而不仅仅是 tornado.concurrent.Future .

5.0 版后已移除: Tornado Futures 已与合并 asyncio.Future ,所以这个方法现在等价于 tornado.gen.convert_yielded .

class tornado.platform.asyncio.AnyThreadEventLoopPolicy[源代码]

允许在任何线程上创建循环的事件循环策略。

默认值 asyncio 事件循环策略只在主线程中自动创建事件循环。其他线程必须显式创建事件循环,或者 asyncio.get_event_loop (因此) IOLoop.current 会失败。安装此策略允许在任何线程上自动创建事件循环,以匹配5.0之前的Tornado版本(或python 2上的5.0)的行为。

用法:

asyncio.set_event_loop_policy(AnyThreadEventLoopPolicy())

5.0 新版功能.

6.2 版后已移除: AnyThreadEventLoopPolicy 影响事件循环的隐式创建,这在Python3.10中已弃用,并将在未来版本的Python中删除。当时 AnyThreadEventLoopPolicy 将不再有用。如果您依赖它,请使用 asyncio.new_event_loopasyncio.run 显式地在任何需要事件循环的非主线程中。

class tornado.platform.asyncio.AddThreadSelectorEventLoop(real_loop: asyncio.events.AbstractEventLoop)[源代码]

包装事件循环以添加 add_reader 方法族

此类的实例启动第二个线程来运行选择器。此线程对用户完全隐藏;所有回调都在包装的事件循环的线程上运行。

这个类由Tornado自动使用;应用程序不需要直接引用它。

用这个类包装任何事件循环是安全的,尽管它只对不实现 add_reader 方法家族本身(即。 WindowsProactorEventLoop

关闭 AddThreadSelectorEventLoop 同时关闭包装的事件循环。