Повторение регулируемых запросов DynamoDB

Я использую AWS SDK для PHP для программного взаимодействия с 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);
    }
}

Я полагаю, это работает, но это немного тупой. В частности, он будет повторять все неудавшиеся запросы, а не только регулируемые запросы. Если есть неразрешимая ошибка, я действительно не хочу повторять запрос.

Чтобы сделать это умнее, я хотел бы заглянуть внутрь регулируемого ответа на предмет уникального идентификатора (то есть конкретного сообщения об ошибке). Но хоть убей, я не могу записать (или найти где-нибудь в Интернете) образец дросселированного ответа.

Как лучше всего компенсировать риск дросселирования и максимизировать вероятность выполнения запроса?


person kingjeffrey    schedule 07.12.2012    source источник


Ответы (1)


Оказывается, пакеты SDK AWS будут автоматически повторять дросселированные запросы до тех пор, пока не добьются успеха. Таким образом, мои усилия, указанные выше, не нужны (поскольку я использую AWS SDK для PHP).

На странице документации Обработка ошибок в Amazon DynamoDB говорится следующее для ошибки ProvisionedThroughputExceededException:

Пакеты SDK AWS для Amazon DynamoDB автоматически повторяют запросы, получившие это исключение. Итак, ваш запрос в конечном итоге будет успешным, если только запрос не слишком велик или ваша очередь повторных попыток слишком велика для завершения.

person kingjeffrey    schedule 08.12.2012
comment
Это также объясняет, почему мне не удалось зафиксировать ошибку в ответах, хотя я наблюдал за дросселированием на серверной части AWS. - person kingjeffrey; 08.12.2012