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 版后已移除: 现在在适当的时候自动使用;不再需要直接引用这个类。
- tornado.platform.asyncio.to_tornado_future(asyncio_future: _asyncio.Future) _asyncio.Future[源代码]¶
转换一个
asyncio.Future到Atornado.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_loop或asyncio.run显式地在任何需要事件循环的非主线程中。
- class tornado.platform.asyncio.AddThreadSelectorEventLoop(real_loop: asyncio.events.AbstractEventLoop)[源代码]¶
包装事件循环以添加
add_reader方法族此类的实例启动第二个线程来运行选择器。此线程对用户完全隐藏;所有回调都在包装的事件循环的线程上运行。
这个类由Tornado自动使用;应用程序不需要直接引用它。
用这个类包装任何事件循环是安全的,尽管它只对不实现
add_reader方法家族本身(即。WindowsProactorEventLoop)关闭
AddThreadSelectorEventLoop同时关闭包装的事件循环。