web-dev-qa-db-ja.com

FacebookグラフAPIのレート制限とバッチリクエスト

600コール/ 600秒のレート制限がいくつか言及されています(例: quora )。

知りたいのは、600 batch リクエストを600秒で実行できるかどうかです(バッチリクエストは最大50のリクエストで構成されます)。

26
daremon

次のエラーメッセージをチェックして、プログラムでレート制限を処理する必要があります。エラーが発生した場合は、次の呼び出しの前に時間待機ループを設定する必要があります。トラフィックの多いアプリケーションの1つがこのエラーを監視しており、速度が低下します。

差出人: https://developers.facebook.com/docs/bestpractices/

レート制限(API_EC_TOO_MANY_CALLS)アプリケーションで呼び出しが多すぎる場合、APIサーバーが自動的にレート制限を行い、「API_EC_TOO_MANY_CALLS」エラーを返します。通常、これは発生しません。もしそうなら、それはあなたのアプリケーションがあまりにも多くのAPI呼び出しをしていると判断されたためです。コードを反復処理して、必要なユーザーエクスペリエンスを維持するために、呼び出しをできるだけ少なくします。複雑なFQLクエリも回避する必要があります。アプリケーションが抑制されているかどうかを理解するには、Insightsに移動して[Throttling]をクリックします。

edit

コメントスレッドでIgyによって報告されたように、そのバッチの各リクエストは1としてカウントされます。たとえば、600が最大制限である場合、それぞれ50の呼び出しを含む15のバッチリクエストを開始できます。

12
DMCS

FBドキュメントによると、バッチ内の各要素は個別の呼び出しとしてカウントされます。

現在、バッチに含めることができるリクエストの数は50に制限されていますが、バッチ内の各呼び出しは、API呼び出し制限とリソース制限を計算するために個別にカウントされます。たとえば、10個のAPI呼び出しのバッチは10個の呼び出しとしてカウントされ、バッチ内の各呼び出しは同じ方法でCPUリソースの制限に影響します。

引用元: https://developers.facebook.com/docs/reference/api/batch/

ただし、経験的な証拠はありません。

デビッド

8
Marquez

私の経験から、彼らは彼らがされた方法に関係なく個々の要求を数えます(バッチでまたはそうではありません)。

たとえば、それぞれに10リクエストを含む1バッチ/秒を実行しようとすると、すぐに「TOO MANY CALLS」になります。

私が1バッチ/ 10秒を実行している場合、各バッチに10のリクエストが含まれていると、呼び出しが多すぎることはありません。

個人的には、通常のAPI呼び出しよりもバッチを優先する理由はないと思います。

6
Nikita Prokopov

私は今、Facebook APIでかなり大きくてつらい経験をしており、それを述べることができます:

  • バッチリクエストに50のリクエストが含まれている場合、Facebookでは50リクエストとしてカウントされます
  • 1リクエスト!= 1コール。 Facebookには、通話とは何かについて独自の定義があります。リクエストが大きい場合、大量のデータを返すか、大量のCPUを消費すると、複数の呼び出しとしてカウントされます。

私が行っている最も頻繁なグラフAPI呼び出しにはネストされたフィールドがたくさん含まれており、200回しか実行しなかった後、「600呼び出し/ 600秒」に達したことに気付きました。つまり、私の場合、基本的にこの呼び出し回数は3です...

他にも多くのレート制限がありますが、どれも適切に文書化されていません...

5
tibo

バッチ呼び出しは間違いなく、バッチ内のアイテムごとにカウントされます。 50項目の1回のバッチ呼び出しは、グラフを使用した50回のAPI呼び出しに相当します。

2
quest