Повторяющиеся дросселированные запросы DynamoDB

Я использую AWS SDK для PHP для программного взаимодействия с DynamoDB.

Я хотел бы определить, был ли ограничен запрос к DynamoDB, чтобы после небольшой задержки можно было выполнить другой запрос.

Сейчас я работаю в предположении, что задушенные запросы не выполняются. Часто задаваемые вопросы Amazon предполагают, что при регулировании возвращается ошибка 400.

Поэтому у меня есть логика, которая выглядит примерно так:

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

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

    if( $response->isOK() ) {

        break;

    } elseif( $i < 9 ) {

        sleep(1);
    }
}

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

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам