web-dev-qa-db-ja.com

AmazonAPIによるリクエストの送信が速すぎる

ゲーム比較サイトを作成していますが、Amazonの価格を含めたいと思います。私が直面している問題は、APIを使用して、すでに持っている25,000の製品の価格を取得することです。

現在、Amazons APIのItemLookupを使用しており、価格を取得するように機能していますが、約10回の結果の後、「リクエストの送信が速すぎます」というエラーが表示されます。より遅い速度でリクエストを再試行してください。

リクエストレートを遅くする最良の方法は何ですか?

ありがとう、

9
Phil

アプリケーションがアカウントの最大リクエスト制限を超えるリクエストを送信しようとすると、Product AdvertisingAPIからエラーメッセージが表示される場合があります。各アカウントのリクエスト制限は、収益のパフォーマンスに基づいて計算されます。 Product Advertising APIへのアクセスに使用される各アカウントには、1秒あたり1リクエストの初期使用制限が許可されています。各アカウントは、最後の30日間(1分あたり約$ 0.11)で駆動される出荷アイテムの収益$ 4,600ごとに、1秒あたり1リクエスト(最大10)を追加で受け取ります。

From Amazon API Docs

これを1回実行することを計画している場合は、リクエストの合間に1秒間スリープします。

これをより頻繁に実行することを計画している場合は、クエリが戻るのにかかる時間がそのスリープから外れるようにすることで、さらに最適化する価値があります(したがって、私のAPIクエリが200ミリ秒かかる場合戻ってきて、800msだけ寝ます)

11
Doug

1秒以上の遅延を入れても同じ問題が発生しました。

たった1秒の遅延でリクエストが多すぎると、Amazonはそれを嫌い、あなたがスパマーだと思っていると思います。

別のキーペアを生成し(さらにリクエストを行うときに使用し)、1.1秒の遅延を設定して、高速リクエストを再度実行できるようにする必要があります。

これは私のために働いた。

あなたの要求がたくさんの繰り返し。次に、コンテキストをクリアして毎日キャッシュを作成できます。またはaws購入承認に連絡する

0
Tim

それは10の結果の後にあなたが得ることができる結果の数をチェックするべきであるとだけ言っているので。 10回の高速リクエストの後に常に表示される場合は、

 wait(500)

またはそれ以上のミリ秒。 10回しか経過していない場合は、ループを作成して、9回ごとにこれを実行できます。

0
Valentin Bauer