View a markdown version of this page

ロングポーリングによる API コールの削減 - Amazon Redshift

Amazon Redshift は、2026 年 6 月 30 日以降、Python UDF の使用をサポートしなくなります。これは段階的に実施されます。Python のサポート終了と移行オプションの詳細については、2025 年 6 月 30 日に公開されたブログ記事を参照してください。

ロングポーリングによる API コールの削減

デフォルトでは、Data API オペレーションは即座にレスポンスを返します。オペレーションが進行中のステートメントに対するものである場合は、ステートメントが終了状態になるまで繰り返しポーリングする必要があります。ロングポーリングでは、WaitTimeSeconds を 1~30 の値に設定します。API は、ステートメントの終了または WaitTimeSeconds への到達のいずれか早い方まで、同期レスポンスの返信を遅らせます。

ロングポーリングは、DescribeStatementExecuteStatementBatchExecuteStatementGetStatementResultGetStatementResultV2 でサポートされています。

オペレーションが WaitTimeSeconds を使用して新しいステートメントを送信するか、既存のステートメントを待機する場合。

  • ステートメントが待機時間内に完了した場合、レスポンスには、オペレーションに応じて終了ステータスまたは結果データが含まれます。

  • 待機時間が経過してもステートメントがまだ実行中の場合、レスポンスは現在の進行中のステータスを返します。

  • ロングポーリングリクエストが行われる前にステートメントが既に完了している場合、API は直ちに終了ステータスを返します。

  • WaitTimeSeconds省略した場合、デフォルトの非同期動作が保持されます。

一般的なユースケース

ロングポーリングが役立つ場合の例を次に示します。

  • 短いクエリを送信して完了を待つWaitTimeSeconds を指定して ExecuteStatement を使用します。クエリが終了するか、待機時間が経過すると、レスポンスはステートメントの StatusRedshiftPid、および HasResultSet を返します。完全なステートメントメタデータを取得するには、DescribeStatement を呼び出します。HasResultSettrue の場合、GetStatementResult を呼び出して結果を取得します。

  • ステータスのロングポーリングExecuteStatement を使用してクエリを送信し、WaitTimeSeconds を指定して DescribeStatement を呼び出します。クエリが終了すると、DescribeStatement はステータス、所要時間、エラーの詳細を含むステートメントの完全なメタデータを返します。

  • 結果のロングポーリングExecuteStatement を使用してクエリを送信し、WaitTimeSeconds を指定して GetStatementResult を呼び出します。クエリが終了すると、結果データが直接返されます。待機時間が経過してもクエリがまだ実行されている場合、結果がまだ利用できないことを示す ResourceNotFoundException が返されます。

  • 複数のクエリを送信し、バッチ全体が完了するまで待機するWaitTimeSeconds を指定して BatchExecuteStatement を使用します。呼び出しは、すべてのサブステートメントが完了するまで維持され、バッチの親 ID と全体的なステータスが返されます。

  • 複数のクエリを送信し、サブステートメントのステータスをロングポーリングする – サブステートメント ID と WaitTimeSeconds を指定して DescribeStatement または GetStatementResult を使用します。そのサブステートメントが終了すると、バッチの残りの処理を待たずに、すぐに結果を返します。