tornado.concurrent
— Future
オブジェクトの操作¶
Future
オブジェクトを操作するためのユーティリティ。Tornadoは以前、独自の
Future
クラスを提供していましたが、現在はasyncio.Future
を使用しています。このモジュールには、Tornadoの古いFuture
実装との下位互換性を維持しながら、asyncio.Future
を操作するためのユーティリティ関数が含まれています。このモジュールはTornadoの内部実装の重要な部分ですが、アプリケーションが直接対話する必要はめったにありません。
- class tornado.concurrent.Future¶
tornado.concurrent.Future
はasyncio.Future
のエイリアスです。Tornadoでは、アプリケーションが
Future
オブジェクトと対話する主な方法は、Future
オブジェクト自体のメソッドを呼び出すのではなく、コルーチン内でawaiting
またはyielding
することです。利用可能なメソッドの詳細については、asyncio.Future
のドキュメントを参照してください。
- tornado.concurrent.run_on_executor(*args: Any, **kwargs: Any) Callable [ソース]¶
executorで同期メソッドを非同期的に実行するためのデコレーター。
futureを返します。
使用するexecutorは、
self
のexecutor
属性によって決定されます。別の属性名を使用するには、デコレーターにキーワード引数を渡します。@run_on_executor(executor='_thread_pool') def foo(self): pass
このデコレーターは、同様の名前の
IOLoop.run_in_executor
と混同しないでください。一般的に、ブロッキングメソッドを呼び出す場合は、このデコレーターをメソッドを定義する場合に使用するのではなく、run_in_executor
を使用することをお勧めします。古いバージョンのTornadoとの互換性が必要な場合は、executorを定義し、呼び出しサイトでexecutor.submit()
を使用することを検討してください。バージョン 4.2 で変更: 代替属性を使用するためのキーワード引数を追加しました。
バージョン 5.0 で変更:
self.io_loop
の代わりに、常に現在の IOLoop を使用します。バージョン 5.1 で変更:
concurrent.futures.Future
の代わりに、await
と互換性のあるFuture
を返します。バージョン 5.1 から非推奨:
callback
引数は非推奨となり、6.0 で削除されます。デコレーター自体は新しいコードでは推奨されていませんが、6.0 では削除されません。バージョン 6.0 で変更:
callback
引数が削除されました。
- tornado.concurrent.chain_future(a: Future[_T], b: Future[_T]) None [ソース]¶
2つのfutureをチェーンして、一方が完了したらもう一方が完了するようにします。
a
の結果(成功または失敗)は、a
が完了するまでにb
がすでに完了またはキャンセルされていない限り、b
にコピーされます。バージョン 5.0 で変更: Tornado/asyncio
Future
オブジェクトとconcurrent.futures.Future
の両方を受け入れるようになりました。
- tornado.concurrent.future_set_result_unless_cancelled(future: Union[futures.Future[_T], Future[_T]], value: _T) None [ソース]¶
キャンセルされていなければ、指定された
value
をFuture
の結果として設定します。キャンセルされた
asyncio.Future
でset_result()
を呼び出す際のasyncio.InvalidStateError
を回避します。バージョン5.0で新規追加されました。
- tornado.concurrent.future_set_exception_unless_cancelled(future: Union[futures.Future[_T], Future[_T]], exc: BaseException) None [ソース]¶
指定された
exc
をFuture
の例外として設定します。Futureが既にキャンセルされている場合は、代わりに例外をログに記録します。このロギングが不要な場合は、呼び出し側でFutureの状態を明示的に確認し、このラッパーの代わりに
Future.set_exception
を呼び出す必要があります。キャンセルされた
asyncio.Future
でset_exception()
を呼び出す際のasyncio.InvalidStateError
を回避します。バージョン6.0で新規追加されました。
- tornado.concurrent.future_set_exc_info(future: Union[futures.Future[_T], Future[_T]], exc_info: Tuple[Optional[type], Optional[BaseException], Optional[TracebackType]]) None [ソース]¶
指定された
exc_info
をFuture
の例外として設定します。Python 2でのより良いトレースバックを可能にするために、
asyncio.Future
とTornadoの古いバージョンの拡張の両方を理解します。バージョン5.0で新規追加されました。
バージョン6.0で変更: Futureが既にキャンセルされている場合、この関数は何も行いません。(以前は
asyncio.InvalidStateError
が発生していました)
- tornado.concurrent.future_add_done_callback(future: futures.Future[_T], callback: Callable[[futures.Future[_T]], None]) None [ソース]¶
- tornado.concurrent.future_add_done_callback(future: Future[_T], callback: Callable[[Future[_T]], None]) None
future
が完了したときにcallback
を呼び出すように手配します。callback
は、future
を1つの引数として呼び出されます。future
が既に完了している場合、callback
はすぐに呼び出されます。これは、そのような保証をしないFuture.add_done_callback
の動作とは異なる場合があります。バージョン5.0で新規追加されました。