AWS SDK for PHPを使用して、DynamoDBとプログラムでやり取りしています。
DynamoDBへのリクエストが抑制されているかどうかを検出して、少し遅れて別のリクエストを作成できるようにしたいと思います。
現在、スロットルされたリクエストが実行されないことを前提に運用しています。Amazon FAQは、スロットルが発生すると400エラーが返されることを示唆しています。
だから私は現在このようなロジックを持っています:
for( $i=0; $i<10; $i++ ) {
$response = $dynamodb->get_item($get_item_args);
if( $response->isOK() ) {
break;
} elseif( $i < 9 ) {
sleep(1);
}
}
これはうまくいくと思いますが、少し馬鹿げています。特に、スロットルされたリクエストだけでなく、失敗したすべてのリクエストを繰り返します。解決できないエラーが発生した場合、私は本当にリクエストを繰り返したくありません。
これをよりスマートにするために、抑制された応答の内部で一意の識別子(つまり特定のエラーメッセージ)を探したいと思います。しかし、私の人生では、抑制された応答のサンプルをキャプチャすることはできません(またはインターネット上のどこでも見つけることができません)。
スロットルのリスクを補い、要求が満たされる可能性を最大化するための最良の方法は何ですか?