私は Play を初めて使用します。間違っている可能性があります。Play フレームワークは非同期でリクエストを処理することによりノンブロッキングであり、長時間のブロッキング操作は promise を使用して非同期で行う必要があります。では、特定のリクエストを処理するために promise またはマップされた promise を使用する必要があるのはいつですか?
たとえば、ユーザーがファイルをアップロードしたとします。ファイルがコントローラーに到達すると、そのファイルを一時フォルダーから目的のフォルダーに移動し、データベース レコードを挿入します。したがって、これには、ファイルの移動とデータベースへの挿入という 2 つのブロック操作が含まれます。ファイルが大きくなく、たとえば最大 10MB であると仮定すると、ファイルの移動は非常に高速になるはずです。また、データベース レコードの挿入も、ブロッキング データベース ドライバを使用すると高速になるはずです。
この単純なケースでは、1 つの promise/future を使用して 2 つの操作または 2 つのマップされた promise (ファイルを移動してから db レコードを挿入) を実行するか、promise をまったく使用しないでください。なぜ?
あなたの考え/経験を共有してください。前もって感謝します。