2012-12-07 4 views
0

PHP 용 AWS SDK를 사용하여 DynamoDB와 프로그래밍 방식으로 상호 작용합니다.스로틀 된 DynamoDB 요청

짧은 지연 후 다른 요청을 할 수 있도록 DynamoDB에 대한 요청이 스로틀되었는지 감지하고 싶습니다.

지금은 제한된 요청이 충족되지 않는다고 가정합니다. Amazon FAQs은 제한이 발생할 때 400 오류가 반환 될 것을 제안합니다.

그래서 나는 현재이 같은 형태의 논리가 :이 작동 가정

for($i=0; $i<10; $i++) { 

    $response = $dynamodb->get_item($get_item_args); 

    if($response->isOK()) { 

     break; 

    } elseif($i < 9) { 

     sleep(1); 
    } 
} 

을하지만, 그것은 비트 바보입니다. 특히, 스로틀 된 요청뿐만 아니라 모든 실패한 요청을 반복합니다. 해결할 수없는 오류가있는 경우 요청을 반복하고 싶지 않습니다.

더 똑똑 해지기 위해 고유 식별자 (즉, 특정 오류 메시지)에 대한 제한된 응답을 살펴보고 싶습니다. 그러나 저의 삶을 위해 샘플 응답을 캡처 할 수는 없습니다 (또는 인터넷 어디에서나 찾을 수는 없습니다).

제한의 위험을 보완하고 충족 된 요청의 가능성을 극대화하는 가장 좋은 방법은 무엇입니까?

답변

2

AWS SDK는 성공할 때까지 자동으로 조정 된 요청을 다시 시도합니다. 따라서 위의 노력은 필요하지 않습니다 (PHP 용 AWS SDK를 사용하고 있기 때문에).

Handling Errors in Amazon DynamoDB 문서 페이지하여 ProvisionedThroughputExceededException 오류에 대해 다음 말한다 : 나는 내가 AWS 백엔드 조절 관찰에도 불구하고 응답에 오류를 캡처 할 수 없습니다 이유

The AWS SDKs for Amazon DynamoDB automatically retry requests that receive this exception. So, your request is eventually successful, unless the request is too large or your retry queue is too large to finish.

+1

이도 설명합니다. – kingjeffrey