View a markdown version of this page

긴 폴링으로 API 직접 호출 감소 - Amazon Redshift

Amazon Redshift는 2026년 6월 30일 이후에 Python UDF 사용을 더 이상 지원하지 않습니다. 해당 조치는 단계적으로 시행될 예정입니다. Python 수명 종료 및 마이그레이션 옵션에 대한 자세한 내용은 2025년 6월 30일에 게시된 블로그 게시물을 참조하세요.

긴 폴링으로 API 직접 호출 감소

기본적으로 데이터 API 작업은 즉각적인 응답을 반환합니다. 작업이 진행 중인 문에 대한 경우 문이 터미널 상태에 도달할 때까지 반복적으로 폴링해야 합니다. 긴 폴링의 경우 WaitTimeSeconds를 1~30 사이의 값으로 설정합니다. API는 문이 완료되는 시점 또는 WaitTimeSeconds에 도달하는 시점 중 먼저 도래하는 시점까지 동기 응답 반환을 지연합니다.

긴 폴링은 DescribeStatement, ExecuteStatement, BatchExecuteStatement, GetStatementResultGetStatementResultV2에서 지원됩니다.

작업이 WaitTimeSeconds를 사용하여 새 문을 제출하거나 기존 문을 기다리는 경우:

  • 문이 대기 시간 내에 완료되면 작업에 따라 응답에 터미널 상태 또는 결과 데이터가 포함됩니다.

  • 대기 시간이 만료될 때 문이 계속 실행 중인 경우 응답은 현재 진행 중 상태를 반환합니다.

  • 긴 폴링 요청이 이루어지기 전에 문이 이미 완료된 경우 API는 터미널 상태와 함께 즉시 반환합니다.

  • WaitTimeSeconds생략되면 기본 비동기 동작이 보존됩니다.

일반 사용 사례

다음은 긴 폴링이 유용할 수 있는 경우의 예입니다.

  • 짧은 쿼리를 제출하고 완료될 때까지 대기 - ExecuteStatementWaitTimeSeconds와 함께 사용합니다. 쿼리가 완료되거나 대기 시간이 만료되면 응답은 문 Status, RedshiftPidHasResultSet를 반환합니다. 전체 문 메타데이터를 가져오려면 DescribeStatement를 직접적으로 호출합니다. HasResultSettrue인 경우 GetStatementResult를 직접적으로 호출하여 결과를 가져옵니다.

  • 상태에 대한 긴 폴링 - ExecuteStatement를 사용하여 쿼리를 제출한 다음 DescribeStatementWaitTimeSeconds와 함께 직접적으로 호출합니다. 쿼리가 완료되면 DescribeStatement는 상태, 기간 및 오류 세부 정보를 포함한 전체 문 메타데이터를 반환합니다.

  • 결과에 대한 긴 폴링 - ExecuteStatement를 사용하여 쿼리를 제출한 다음 GetStatementResultWaitTimeSeconds와 함께 직접적으로 호출합니다. 쿼리가 완료되면 결과 데이터가 직접 반환됩니다. 대기 시간이 만료될 때 쿼리가 계속 실행 중인 경우 ResourceNotFoundException이 반환되어 아직 사용할 수 있는 결과가 없음을 나타냅니다.

  • 여러 쿼리를 제출하고 전체 배치가 완료될 때까지 대기 - BatchExecuteStatementWaitTimeSeconds와 함께 사용합니다. 직접 호출은 모든 하위 문이 완료될 때까지 열려 있으며 배치 상위 ID와 전체 상태를 반환합니다.

  • 하위 문에 대한 여러 쿼리 제출 및 긴 폴링 상태 - 하위 문 ID 및 WaitTimeSeconds와 함께 DescribeStatement 또는 GetStatementResult를 사용합니다. 나머지 배치를 기다리지 않고 해당 하위 문이 완료되는 즉시 반환합니다.