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
同时关闭包装的事件循环。