2017-10-13 5 views
0

多くのウェブサイトに同じ10の目標を適用しようとしています。私は目標をtoAddArrayに格納してループして、現在のサイトの目標数に基づいて作成または更新します。最初にバッチを作成し、バッチに目標を追加してループします(書き込みが失敗しないためGoalコードが省略されています)、バッチを実行します。Googleアナリティクス管理API Javaパッケージバッチ処理が内包されていない

コードIは

私は10ゴールのためのコールバックを取得し、これを実行している場合は、最初の5-6が戻って成功してきて何が起こっているか

 //Create batch from Analytics Object 
     BatchRequest b = analytics.batch(); 
     // in loop determine create or update based off current Goal list size 
     FOR LOOP IS HERE 
     if(y < currentSize) 
      { 
       //some code for inserting the goal 
       analytics.management().goals().update(ACTIVE_ACCOUNT_ID, ACTIVE_PROPERTY_ID, ACTIVE_PROFILE_ID, String.valueOf(y+1), toAddArray[y]).queue(b, setCallback("Successfully Added Goal")); 
      } 
      else{ 
       // Some code for when I update the goal 
       // Send to queue 
       analytics.management().goals().insert(ACTIVE_ACCOUNT_ID, ACTIVE_PROPERTY_ID, ACTIVE_PROFILE_ID, toAddArray[y]).queue(b, setCallback("Successfully Added Goal")); 
      } 

      FOR LOOP ENDS 
      //Execute the batch 
      b.execute(); 

を実行しています最後の4はレート制限を超えて戻ってくるでしょう。私の知る限り、バッチシステムのポイントは、URLを1つのヒットにまとめてまとめて送信して、サーバーの負荷を減らすことです。

このシステムは、その場所を持つキューイングシステムのように機能しているようですが、私が作業している書き込みの数を減らすのに役立ちません。私は1000以上のウェブサイトに10の目標を書いているので、私は1日に1万の書き込みを見ている。 1日にプロジェクトあたり500の書き込み制限があるため、これは20日間のことです。私はプロファイルごとに書き込みがある場合、それは2日間のことになります。 GoogleチームでAPIクォータを増やし、Goalのベータ版のアクセスを5つのプロジェクトに追加してキーを切り替えることをリクエストしましたが、その間にバッチ処理を行うためにできることがあるかどうかを知りたい1つの書き込みとして機能する

答えて

0

バッチ処理を使用したパフォーマンスの向上は、アクセス許可(user management docs)でのみ呼び出されます。

私は、あなたが一度に1つずつ電話をかけたように通話が行われると言っても間違いないと思います。一度に10件のコールを送信すると、おそらくクォータエラーが発生しています。私はあなたが多くのあなたは、私はこのことができます願っていimplement exponential backoff.

する必要があり、幸運も書き込んことを確認する必要がある場合、それは1.5qps per Account ID write limit

だ推測している:)答えジョシュのための

+0

感謝を。過去に私は自分自身の "キュー"でヒットをバケッティングしてから、API制限を守らないためにプロセスを定期的にスリープ状態にしました。 [こちら](https://developers.google.com/analytics/devguides/config/mgmt/v3/batching)は、「ベストプラクティス」ページへのリンクであり、これを使用して多くの操作や方法で使用する方法を詳しく説明しています。 APIへのヒット数を減らすことを意図しています。このJavaクラスは実際にはキューを使用せずにHTTPリクエストを生成し、それらを一括して処理するように見えます。私はそれを自分で行い、要求を引き出すつもりです。 –

関連する問題