Amazon Redshift は、2026 年 6 月 30 日以降、Python UDF の使用をサポートしなくなります。これは段階的に実施されます。Python のサポート終了と移行オプションの詳細については、2025 年 6 月 30 日に公開されたブログ記事
ロングポーリングによる API コールの削減
デフォルトでは、Data API オペレーションは即座にレスポンスを返します。オペレーションが進行中のステートメントに対するものである場合は、ステートメントが終了状態になるまで繰り返しポーリングする必要があります。ロングポーリングでは、WaitTimeSeconds を 1~30 の値に設定します。API は、ステートメントの終了または WaitTimeSeconds への到達のいずれか早い方まで、同期レスポンスの返信を遅らせます。
ロングポーリングは、DescribeStatement、ExecuteStatement、BatchExecuteStatement、GetStatementResult、GetStatementResultV2 でサポートされています。
オペレーションが WaitTimeSeconds を使用して新しいステートメントを送信するか、既存のステートメントを待機する場合。
-
ステートメントが待機時間内に完了した場合、レスポンスには、オペレーションに応じて終了ステータスまたは結果データが含まれます。
-
待機時間が経過してもステートメントがまだ実行中の場合、レスポンスは現在の進行中のステータスを返します。
-
ロングポーリングリクエストが行われる前にステートメントが既に完了している場合、API は直ちに終了ステータスを返します。
-
WaitTimeSecondsを省略した場合、デフォルトの非同期動作が保持されます。
一般的なユースケース
ロングポーリングが役立つ場合の例を次に示します。
-
短いクエリを送信して完了を待つ –
WaitTimeSecondsを指定してExecuteStatementを使用します。クエリが終了するか、待機時間が経過すると、レスポンスはステートメントのStatus、RedshiftPid、およびHasResultSetを返します。完全なステートメントメタデータを取得するには、DescribeStatementを呼び出します。HasResultSetがtrueの場合、GetStatementResultを呼び出して結果を取得します。 -
ステータスのロングポーリング –
ExecuteStatementを使用してクエリを送信し、WaitTimeSecondsを指定してDescribeStatementを呼び出します。クエリが終了すると、DescribeStatementはステータス、所要時間、エラーの詳細を含むステートメントの完全なメタデータを返します。 -
結果のロングポーリング –
ExecuteStatementを使用してクエリを送信し、WaitTimeSecondsを指定してGetStatementResultを呼び出します。クエリが終了すると、結果データが直接返されます。待機時間が経過してもクエリがまだ実行されている場合、結果がまだ利用できないことを示すResourceNotFoundExceptionが返されます。 -
複数のクエリを送信し、バッチ全体が完了するまで待機する –
WaitTimeSecondsを指定してBatchExecuteStatementを使用します。呼び出しは、すべてのサブステートメントが完了するまで維持され、バッチの親 ID と全体的なステータスが返されます。 -
複数のクエリを送信し、サブステートメントのステータスをロングポーリングする – サブステートメント ID と
WaitTimeSecondsを指定してDescribeStatementまたはGetStatementResultを使用します。そのサブステートメントが終了すると、バッチの残りの処理を待たずに、すぐに結果を返します。