Повторяющиеся дросселированные запросы 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 автоматически повторяют запросы, получающие это исключение. Таким образом, ваш запрос в конечном итоге будет успешным, если только запрос не слишком велик или ваша очередь повторных попыток слишком велика для завершения.