tornado.platform.asyncioasyncioとTornadoのブリッジ

asyncio モジュールとTornado IOLoop間のブリッジ。

バージョン3.2の新機能。

このモジュールは、Python 3.4で導入されたasyncioモジュールとTornadoを統合します。これにより、同じイベントループ上で2つのライブラリを組み合わせることが可能になります。

バージョン 5.0 で非推奨: このモジュールのコードは引き続き使用されますが、asyncio が利用可能な場合は自動的に有効になるため、アプリケーションでこのモジュールを直接参照する必要はなくなりました。

注記

Tornadoは、セレクターベースのイベントループを使用するように設計されています。Python 3.8以降、プロアクターベースのイベントループがデフォルトになっているWindowsでは、別のスレッドでselectを実行することでセレクターイベントループがエミュレートされます。asyncio をセレクターイベントループを使用するように設定すると、Tornadoのパフォーマンスが向上する可能性があります(ただし、同じプロセス内の他のasyncioベースのライブラリのパフォーマンスが低下する可能性があります)。

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

AsyncIOMainLoop は、現在の asyncio イベントループ(つまり、asyncio.get_event_loop() によって返されるもの)に対応する IOLoop を作成します。

バージョン 5.0 で非推奨: 適切な場合は自動的に使用されるようになりました。このクラスを直接参照する必要はなくなりました。

バージョン 5.0 で変更: AsyncIOMainLoop を閉じると、基盤となる asyncio ループも閉じられるようになりました。

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

AsyncIOLoop は、asyncio イベントループ上で動作する IOLoop です。このクラスは、新しい IOLoops を作成するための通常の Tornado セマンティクスに従います。これらのループは、必ずしも asyncio デフォルトイベントループに関連付けられているわけではありません。

AsyncIOLoop は、新しい asyncio.EventLoop を作成します。このオブジェクトには、asyncio_loop 属性を使用してアクセスできます。

バージョン 6.2 で変更: デフォルトポリシーで常に新しいループを作成するのではなく、アタッチする asyncio ループを指定するための明示的な asyncio_loop 引数をサポートします。

バージョン 5.0 で変更: AsyncIOLoop が現在の IOLoop になると、現在の asyncio イベントループも設定されるようになりました。

バージョン 5.0 で非推奨: 適切な場合は自動的に使用されるようになりました。このクラスを直接参照する必要はなくなりました。

tornado.platform.asyncio.to_tornado_future(asyncio_future: Future) Future[source]

asyncio.Futuretornado.concurrent.Future に変換します。

バージョン4.1の新機能。

バージョン 5.0 で非推奨: Tornado Futuresasyncio.Future に統合されたため、このメソッドは現在何もしません。

tornado.platform.asyncio.to_asyncio_future(tornado_future: Future) Future[source]

Tornadoのイールド可能なオブジェクトを asyncio.Future に変換します。

バージョン4.1の新機能。

バージョン 4.3 で変更: tornado.concurrent.Future だけでなく、あらゆるイールド可能なオブジェクトを受け入れるようになりました。

バージョン 5.0 で非推奨: Tornado Futuresasyncio.Future に統合されたため、このメソッドは現在 tornado.gen.convert_yielded と同等です。

class tornado.platform.asyncio.AnyThreadEventLoopPolicy[source]

任意のスレッドでループ作成を許可するイベントループポリシー。

デフォルトの 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 は、イベントループの暗黙的な作成に影響しますが、これは Python 3.10 で非推奨となり、将来のバージョンの Python で削除される予定です。その時点で、AnyThreadEventLoopPolicy は役に立たなくなります。これに依存している場合は、イベントループを必要とするメインスレッド以外のスレッドで、asyncio.new_event_loop または asyncio.run を明示的に使用してください。

class tornado.platform.asyncio.SelectorThread(real_loop: AbstractEventLoop)[source]

バックグラウンドの選択スレッドで呼び出される add_reader メソッドを定義します。

このクラスのインスタンスは、セレクターを実行するための2番目のスレッドを開始します。このスレッドはユーザーからは完全に隠されています。すべてのコールバックは、ラップされたイベントループのスレッドで実行されます。

通常は AddThreadSelectorEventLoop を介して使用されますが、実行中の asyncio ループにアタッチすることもできます。

class tornado.platform.asyncio.AddThreadSelectorEventLoop(real_loop: AbstractEventLoop)[ソース]

イベントループをラップして、add_reader メソッドファミリの実装を追加します。

このクラスのインスタンスは、セレクターを実行するための2番目のスレッドを開始します。このスレッドはユーザーからは完全に隠されています。すべてのコールバックは、ラップされたイベントループのスレッドで実行されます。

このクラスはTornadoによって自動的に使用されます。アプリケーションが直接参照する必要はありません。

このクラスで任意のイベントループをラップすることは安全ですが、add_reader メソッドファミリを自身で実装していないイベントループ(つまり、WindowsProactorEventLoop)に対してのみ意味があります。

AddThreadSelectorEventLoop を閉じると、ラップされたイベントループも閉じます。