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で新規追加されました。