3.2 版中的新功能。
該模塊將 Tornado 與 Python 3.4 中引入的 ?asyncio
模塊集成在一起。 這使得在同一個事件循環(huán)中組合兩個庫成為可能。
5.0 版后已棄用:雖然此模塊中的代碼仍在使用,但現(xiàn)在在 ?asyncio
可用時自動啟用,因此應用程序不再需要直接引用此模塊。
注意:
Tornado設計為使用基于選擇器的事件循環(huán)。在Windows上,基于proactor的事件循環(huán)自Python 3.8以來一直是默認的,選擇器事件循環(huán)通過在單獨的線程上運行?select
?來模擬。將?asyncio
?配置為使用選擇器事件循環(huán)可能會提高Tornado的性能(但可能會降低同一過程中其他基于?asyncio
?的庫的性能)。
?AsyncIOMainLoop
創(chuàng)建一個對應于當前 ?asyncio
事件循環(huán)的 ?IOLoop
?(即 ?asyncio.get_event_loop()
? 返回的那個)。
5.0 版后已棄用:現(xiàn)在在適當時自動使用; 不再需要直接引用此類。
在 5.0 版更改: 關閉 ?AsyncIOMainLoop
現(xiàn)在會關閉底層的 ?asyncio
循環(huán)。
?AsyncIOLoop
是一個在異步事件循環(huán)上運行的 ?IOLoop
?。 此類遵循用于創(chuàng)建新 ?IOLoops
的常用 Tornado 語義; 這些循環(huán)不一定與 ?asyncio
默認事件循環(huán)相關。
每個 ?AsyncIOLoop
都會創(chuàng)建一個新的 ?asyncio.EventLoop
?; 可以使用 ?asyncio_loop
屬性訪問此對象。
在 5.0 版更改: 當 ?AsyncIOLoop
成為當前 ?IOLoop
時,它也會設置當前 ?asyncio
事件循環(huán)。
5.0 版后已棄用:現(xiàn)在在適當時自動使用; 不再需要直接引用此類。
將 ?asyncio.Future
? 轉換為 ?tornado.concurrent.Future
?。
4.1 版中的新功能。
5.0 版后已棄用:Tornado中 ?Futures
已與 ?asyncio.Future
? 合并,因此此方法現(xiàn)在是無操作的。
將 Tornado ?yieldable?對象轉換為 ?asyncio.Future
?。
4.1 版中的新功能。
在 4.3 版更改:現(xiàn)在接受任何yieldable對象,而不僅僅是 ?tornado.concurrent.Future
?。
5.0 版后已棄用:Tornado中 ?Futures
? 已與 ?asyncio.Future
? 合并,因此此方法現(xiàn)在等效于 ?tornado.gen.convert_yielded
?。
允許在任何線程上創(chuàng)建循環(huán)的事件循環(huán)策略。
默認的?asyncio
?事件循環(huán)策略僅在主線程中自動創(chuàng)建事件循環(huán)。 其他線程必須顯式創(chuàng)建事件循環(huán),否則 ?asyncio.get_event_loop
?(?IOLoop.current
?)將失敗。 安裝此策略允許在任何線程上自動創(chuàng)建事件循環(huán),與 5.0 之前的 Tornado 版本(或 Python 2 上的 5.0)的行為相匹配。
用法:
asyncio.set_event_loop_policy(AnyThreadEventLoopPolicy())
包裝事件循環(huán)以添加?add_reader
?方法系列的實現(xiàn)。
這個類的實例啟動第二個線程來運行選擇器。該線程對用戶完全隱藏;所有回調都在包裝好的事件循環(huán)的線程上運行。
該類由Tornado自動使用;應用程序不需要直接引用它。
使用此類包裝任何事件循環(huán)都是安全的,盡管它僅適用于本身未實現(xiàn)?add_reader
?方法系列的事件循環(huán)(即?WindowsProactReventLoop
?)
關閉?AddThreadSelectorEventLoop
?也會關閉已包裝的事件循環(huán)。
更多建議: