Amazon Redshift 將不再支援在 2026 年 6 月 30 日之後使用 Python UDFs。我們將開始分階段強制執行。如需 Python 生命週期結束和遷移選項的詳細資訊,請參閱 2025 年 6 月 30 日發佈的部落格文章
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用長輪詢減少 API 呼叫
根據預設,資料 API 操作會傳回立即回應。如果操作是針對進行中陳述式,您必須重複輪詢,直到陳述式達到結束狀態。使用長輪詢時,WaitTimeSeconds將 設為介於 1 到 30 之間的值。API 會延遲傳回同步回應,直到陳述式完成或WaitTimeSeconds到達,以先到者為準。
DescribeStatement、ExecuteStatement、BatchExecuteStatement、GetStatementResult 和 GetStatementResultV2 支援長輪詢。
當 操作使用 WaitTimeSeconds來提交新陳述式或等待現有陳述式時:
-
如果陳述式在等待時間內完成,回應會根據操作包含終端機狀態或結果資料。
-
如果陳述式在等待時間到期時仍在執行,回應會傳回目前的進行中狀態。
-
如果陳述式在提出長輪詢請求之前已完成,API 會立即傳回終端機狀態。
-
如果省略
WaitTimeSeconds,則會保留預設的非同步行為。
常用案例
以下是長時間輪詢可能有用的範例:
-
提交簡短查詢並等待完成 -
ExecuteStatement搭配 使用WaitTimeSeconds。當查詢完成或等待時間過期時,回應會傳回陳述式Status、RedshiftPid和HasResultSet。若要取得完整的陳述式中繼資料,請呼叫DescribeStatement。如果HasResultSet是true,請呼叫GetStatementResult來擷取結果。 -
長輪詢狀態 —
ExecuteStatement用於提交查詢,然後使用 呼叫DescribeStatementWaitTimeSeconds。查詢完成時,DescribeStatement會傳回完整的陳述式中繼資料,包括狀態、持續時間和錯誤詳細資訊。 -
長輪詢結果 — 使用
ExecuteStatement提交查詢,然後使用 呼叫GetStatementResultWaitTimeSeconds。當查詢完成時,會直接傳回結果資料。如果查詢在等待時間過期時仍在執行,ResourceNotFoundException則會傳回 ,表示尚無結果可用。 -
提交多個查詢並等待整個批次完成 —
BatchExecuteStatement與 搭配使用WaitTimeSeconds。通話會保持開啟狀態,直到所有子陳述式完成,並傳回批次父系 ID 和整體狀態。 -
提交子陳述式的多個查詢和長輪詢狀態 — 使用
DescribeStatement或GetStatementResult搭配子陳述式 ID 和WaitTimeSeconds。子陳述式一完成就會傳回 ,而不會等待批次的其餘部分。