2013-08-16 22 views
6

そこにはクォータがあることがわかります:https://code.google.com/apis/console しかし、これは毎日のクォータです。そして、私は1日に10,000クエリ(礼儀の限界)を参照してください。同じエラーが出るまで、再び170〜190を行いGoogle+ APIには時間制限がありますか?

{ 
"code" : 403, 
"errors" : [ { 
"domain" : "usageLimits", 
"message" : "Rate Limit Exceeded", 
"reason" : "rateLimitExceeded" 
} ], 
"message" : "Rate Limit Exceeded" 
} 

1時間の番組の後:それはGoogle +のAPIからのこのような応答を受信した後 は、実は私のプログラムは、時速170〜190の要求を行います。しかし、1時間あたり190回のリクエスト* 24時間は1万回には及ばない。

私はメソッドpeople.searchとgoogle-api-java-clientライブラリバージョン1.15.0-rcを使用しています。以下のような 初期プラスサービス:

HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); 
     JsonFactory jsonFactory = new JacksonFactory(); 
     GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport) 
       .setJsonFactory(jsonFactory) 
       .setServiceAccountId(EMAIL) 
       .setServiceAccountScopes(Collections.singleton(PlusScopes.PLUS_LOGIN)) 
       .setServiceAccountPrivateKeyFromP12File(KEY_FILE)) 
       .build(); 
     Plus plus = new Plus.Builder(httpTransport, jsonFactory, credential) 
       .setApplicationName(APP_NAME).build(); 

そして、このような検索方法を使用します。

Plus.People.Search searchPeople = people.search(fullname); 
    searchPeople.setMaxResults(50L); 
    searchPeople.setFields("items(id),nextPageToken"); 
    PeopleFeed peopleFeed = searchPeople.execute(); 
while (true) { 
     if (peopleFeed.getItems().size() == 0) { 
      break; 
     } 

     /* Save people info here */ 

     if (peopleFeed.getNextPageToken() == null) { 
      break; 
     } 
     try { 
      Thread.sleep(500); 
     } catch (InterruptedException e) { } 
     searchPeople.setPageToken(peopleFeed.getNextPageToken()); 
     peopleFeed = searchPeople.execute(); 
    } 

私は1秒か2秒に睡眠時間を変更しようとした - と同じ動作。 キーファイルを再生成しようとしました - 運はありません。

私は間違ったことをしましたか?

答えて

8

問題は三重である:

  1. レートリミット日あたり(10,000)及び第二(5)当たり両方です。
  2. エラーメッセージは、種類間で共有されます。
  3. 次のウィンドウが表示されなくなるまでの時間。

このように、私は私のアプリケーションはrand(1,5)秒待って、彼らは再びレート制限されている場合、私は再試行する前に3600秒待っています。

+0

私は同様の解決策を完了しました - 要求の間にほとんど待ちません。これまでのところもっと良い解決策はないようです。 – sil3

+0

次に、彼らはバッチリクエストをなぜ提供していますか?バッチリクエストを行うたびにレート制限があります。 –

1

指定したAPIコンソールでQuotasリンクにアクセスすると、アプリの各APIの使用状況の1日の制限が細分化されますが、ユーザーごとの割り当ても表示されます。例えば、鉱山は現在、一般的には

 
    Google+ API 5.0 requests/second/user 

、そのAPIエンドポイントはこれ以上のバーストがより多くのを許可することができ、これは推定値を考慮しなければならないが、延長期間については、この制限を超える行くことレート制限があなたにエラー超え引き起こす可能性を示しています見る。

+0

ありがとうございました。はい、私の5.0要求/秒/ユーザーも表示されます。しかし、私は待機時間(_Thread.sleep()_)を使用してこのレート内に留まります。そして、私はこのアプリの唯一のユーザーです。 – sil3

関連する問題