19

Google URL Shorter APIを使用すると、ロード時にテストを開始するまで正常に機能していました. API を使用するようにサインアップし、1 日あたり 1,000,000 ヒットがあるにもかかわらず、すぐに Google から 403 Rate Limit Exceeded エラーが返され始めました。Google レポート ツールでリクエストが受信されているのを確認できますが、すべてのリクエストに対して 403 が返されています。403 は、API への約 345/350 ヒットで戻ってき始め、何時間も続いています。

考え?

4

4 に答える 4

8

API は、リクエストを 1 リクエスト/秒/ユーザーごとに制限します。

ユーザーは一意の IP アドレスとして定義されます。

そのため、単一の IP から負荷テストを行っていた場合、レート制限の問題が発生します。

https://developers.google.com/analytics/devguides/reporting/mcf/v3/limits-quotas#general_api

于 2014-07-18T05:24:26.073 に答える
2

「1リクエスト/秒/ユーザーごと」とは思いません。私の場合、またはGoogleのURL短縮サービスの場合、docに書かれていることは100%正しいです。(参考:「OAuth」ではなく「パブリックAPIアクセス」を使用しています)

私はほとんど同じ問題を抱えていますが、私にとっては、「いくつかの URL で一定期間このエラーが発生する」可能性が高くなります。どういう意味ですか?読み続けてください。

これらは私が見つけたものです:

  • Google URL Shorterを同時に使用するために10個のスレッドを使用できますが、常にではありません...
  • 処理中、1 つのスレッドで 1 つの URL が失敗しても、他のスレッドは他の URL を取得できます。
  • URLが失敗し、後で同じURLを再試行した場合(他のプロセスが実行されていなくても、一定期間は機能しません。さらに、「&test = 1」などの文字列を追加しようとしましたが、役に立ちませんが、別の URL に変更すると機能します。

したがって、Google のサーバーには各 URL のキャッシュが存在する可能性があります。URL が失敗した場合、キャッシュが解放されるまでしばらく待つ必要があります。

したがって、私の問題を解決するには、次のような不気味なコードを書く必要があります。

  • 失敗した場合、その特定のスレッドは 1 分間スリープします (はい 1 分間)。
  • 10回試行し続けます(完全に、失敗したURLの場合は10分になる可能性があります)

ただし、固定スレッド プール サイズ 10 で ExecutorService を使用しているため、この不気味なコードは私の場合には問題ありません。したがって、失敗した場合でも、他の人は短縮 URL を取得できます。それは問題を解決します...少なくとも私にとっては。

于 2015-05-14T15:08:02.447 に答える
-8

拡張機能アイコンを右クリックし、[オプション] に移動して、下部にある [アクセスを許可] をクリックします。

于 2014-09-16T07:37:24.940 に答える