私たちは、コードのこの部分を知っていた:私は3秒と言う期間の有限値を入れた場合Duration.Infで待っているインスタンスをブロックするのがベストプラクティスですか?
Await.result(someFuture, Duration.Inf)
、一度期限が切れ、それはTimeOutExceptionをスローします。
Duration.Infについては、アプリケーションがハングすることがありますか? Duration.Infを使用する際のベストプラクティスは何ですか?
私たちは、コードのこの部分を知っていた:私は3秒と言う期間の有限値を入れた場合Duration.Infで待っているインスタンスをブロックするのがベストプラクティスですか?
Await.result(someFuture, Duration.Inf)
、一度期限が切れ、それはTimeOutExceptionをスローします。
Duration.Infについては、アプリケーションがハングすることがありますか? Duration.Infを使用する際のベストプラクティスは何ですか?
Duration.Inf
を使用する場合のベストプラクティスは何ですか?
のベストプラクティスは次のように、全くAwait
を使用してブロックし、非同期Future
を処理するためのコールバックのいくつかの並べ替えを使用しないことであろうmap
、foreach
、onSuccess
、onFailure
など、あなたのユースケースに応じて。
何らかの理由でAwait
を使用してブロックする必要がある場合(実際にこれを行う理由はほとんどないはずです)、妥当な制限を持つ有限のDuration
を設定する必要があります。たとえば、someFuture
が通常5秒かかると分かっている場合は、おそらくタイムアウトを10秒に設定します。さもなければ、Future
が完了しない場合、Await
を呼び出すスレッドは、が永久にハングする可能性があります。良い
何もあなたがアプリケーションは、長年の懸案Future
を待ってハングアップしているようにしたいない限り、Duration.Inf
を使用してから出てきませんし、そうすることは絶対的に重要であることができます。しかし、一般的には、全く応答しないよりもクラッシュさせるほうが良いです。