Was ist das Anruflimit für die Graph API von Facebook?


Antworten:


58

Die beste Antwort auf diese Frage aus einem anderen Forum von Ash Rust im Jahr 2010:

"Nach einigen Tests und Diskussionen mit dem Facebook-Plattformteam gibt es kein offizielles Limit, das mir bekannt ist oder in der Dokumentation zu finden ist. Ich habe jedoch festgestellt, dass 600 Anrufe pro 600 Sekunden, pro Token und pro IP ungefähr wo sind Sie halten Sie auf. Ich habe auch einige anwendungsbasierte Ratenbegrenzungen gesehen, aber keine Zahlen.

In der Regel sollte ein Anruf pro Sekunde nicht zeitlich begrenzt werden. Oberflächlich betrachtet scheint dies sehr restriktiv zu sein, aber denken Sie daran, dass Sie bestimmte Aufrufe stapelweise ausführen und die Abonnement-API verwenden können, um Änderungen zu erhalten. "


Die oben genannten Informationen sind ab Oktober 2015 veraltet. Laut https://developers.facebook.com/docs/graph-api/advanced/rate-limiting sind es jetzt 200 API-Aufrufe pro Benutzer in einem bestimmten 60-Minuten-Fenster


12
@mangobug Pro Token und pro IP bedeutet .. was genau? Bedeutet das, dass ich die Anzahl der Anrufe verdoppeln kann, wenn ich dasselbe Token in zwei verschiedenen IPs verwende? Kann ich die Anzahl der Anrufe verdoppeln, wenn ich zwei Zugriffstoken habe, die immer noch von derselben IP stammen?
Henley Chiu

2
@ Mangobug: Ich denke, Henley Chius letzter Kommentar / Frage ist hier ziemlich wichtig :)
Erik Kaplun

5
"Aber denken Sie daran, dass Sie bestimmte Anrufe stapeln können." Facebook stellt klar, dass dies die Anzahl der effektiven API-Aufrufe nicht auf Ihr Limit reduziert: "Durch das Stapeln von Anrufen wird die Anzahl der API-Aufrufe nicht verringert." developer.facebook.com/docs/marketing-api/…
Ben Morris

3
Dies ist nicht mehr gültig, siehe Antwort des Benutzers> 200 API-Aufrufe pro Benutzer in einem bestimmten 60-Minuten-Fenster
Brandon Romano

1
Wie bekomme ich mehr Benutzer für meine App? Was ist ein App-Benutzer? Wo zeigt es, wie viele ich habe?
Farzher

48

Jetzt ist es offiziell :

Jede App erhält eine Zuteilung von 200 API-Aufrufen pro Benutzer in einem bestimmten 60-Minuten-Fenster .

In der Facebook-Dokumentation vom 7. Oktober 2015 erfahren Sie, wie die Ratenbegrenzung in der Graph-API funktioniert:

  • Die Ratenbegrenzung erfolgt auf Ihrer Facebook-AppId. Wenn Ihre App ein Ratenlimit erreicht, werden alle für diese App getätigten Anrufe nicht nur auf Benutzerbasis begrenzt.
  • Die Ratenbegrenzung wird berechnet, indem die Anzahl der Benutzer verwendet wird, die Ihre App am Vortag hatte, und die heutigen neuen Anmeldungen hinzugefügt werden. Dies gibt eine Basisanzahl von Benutzern an, die Ihre App hat.

Wenn Ihre App beispielsweise gestern 10 Benutzer und heute 5 neue Anmeldungen hatte, erhalten Sie eine Basis von 15 Benutzern. Dies bedeutet, dass Ihre App in jedem 60-Minuten-Fenster ((10 + 5) * 200) = 3000 API-Aufrufe ausführen kann.

Weitere Informationen finden Sie hier: https://developers.facebook.com/docs/graph-api/advanced/rate-limiting

- Update vom 12. April 2016 -

Facebook hat jetzt ein Ratenlimit-Dashboard , mit dem Sie viel einfacher feststellen können , ob das Ratenlimit Ihrer App überschritten wird. Es sieht aus wie das:

Geben Sie hier die Bildbeschreibung ein


AFAIK Das Limit gilt nur für Apps mit Graph API Version 2.5 und höher. Ältere Apps haben dieses Limit noch nicht.
Marius

Ist es möglich, wenn wir das Limit erreichen, Facebook uns den Fehler zurückzugeben Error: read ECONNRESET???
Konstantinos Natsios

Das tatsächliche Limit gilt nicht pro Benutzer, sondern ist ein Durchschnitt für täglich aktive Benutzer: "Ihre App kann insgesamt 200 Anrufe pro Stunde und Benutzer tätigen. Wenn Ihre App beispielsweise 100 Benutzer hat, bedeutet dies, dass Ihre App 20.000 Anrufe tätigen kann Anrufe. Dies ist kein Benutzerlimit, sodass ein Benutzer 19.000 dieser Anrufe und ein anderer 1.000 tätigen kann. Dieses Limit wird basierend auf der Anzahl der Anrufe in der vorherigen Stunde berechnet. "
Jason Goemaat

2
Wäre viel einfacher, wenn sie estimatedCallsLeftForThisHour: 1234nach jedem Anruf zurückkehren würden.
August

Schöne und präzise Antwort!
Alex Pliutau

20

Gemäß den Facebook-Entwicklungsrichtlinien "I. Features und Funktionalität" sind die einzigen Grenzen:

(> 5 Millionen MAU) oder (> 100 Millionen API-Aufrufe pro Tag) oder (> 50 Millionen Impressionen pro Tag).

(Mau bedeutet monatliche Benutzer)

Es sagt nicht, was sie tun werden, nachdem sie die Grenzen überschritten haben ...

Heute bin ich auf diese Einschränkung gestoßen:

Anrufe an mailbox_fql haben die Rate von 300 Anrufen pro 600 Sekunden überschritten.

Insgesamt hat jede Tabelle unterschiedliche Grenzwerte. In den meisten Fällen gibt fql nicht mehr als 30 Objekte pro fql zurück. Außerdem scheint es mir, dass Sie die Grenzwerte für eine Tabelle überschreiten und gleichzeitig auf verschiedene Tabellen zugreifen können. Die Frage ist, ob die API (nach Überschreitung des Grenzwerts) für den gesamten Benutzer oder nur für den Benutzer blockiert ist hat das Limit überschritten ... Wie auch immer, nachdem Sie das Limit überschritten haben, müssen Sie ungefähr 10 Minuten warten, dann ist es in Ordnung.

Technisch gesehen können Sie also höchstens 300 * 30 Objekte pro 10 Minuten in der Tabelle mailbox_fql abrufen.


Dies sind Schwellenwerte, über die ein Vertrag bestehen muss, nicht die harten technischen Grenzen, die in Mangobugs Antwort stehen
Igy

nicht wirklich "Anrufe an mailbox_fql haben die Rate von 300 Anrufen pro 600 Sekunden überschritten." bedeutet, dass es eine harte Grenze ist, die im wirklichen Leben durchgesetzt wurde. das würde auch darauf hindeuten, dass es unterschiedliche Grenzwerte für unterschiedliche Tabellen gibt. (Was wahr ist).
Visgean Skeloru

6

Aus der Facebook-Dokumentation

Begrenzung der Benutzerebenenrate

Diese Ratenbegrenzung wird auf Benutzerebene für alle API-Anrufe mit Ausnahme von Anzeigen-APIs angewendet.

Ratenbeschränkungen treten in Echtzeit auf dem Schiebefenster auf. Jedem Anruf wird eine Punktzahl zugewiesen. Es gibt eine maximale Punktzahl von n. Der Benutzer sammelt im Laufe der Zeit eine Punktzahl basierend auf den getätigten Anrufen. Wenn die maximale Punktzahl erreicht ist, wird der Drosselfehler ausgelöst. Fehler, Code: 17, Meldung: Benutzeranforderungslimit erreicht

Begrenzung der App-Level-Rate

Diese Ratenbegrenzung wird global auf App-Ebene angewendet. Anzeigen-API-Anrufe sind ausgeschlossen.

Die Ratenbegrenzung erfolgt in Echtzeit über eine Stunde auf dem Schiebefenster. Die Statistiken werden für die Anzahl der getätigten Anrufe und Abfragen, die CPU-Zeit und den für jede App verwendeten Speicher erfasst. Es gibt ein Limit für jede Ressource multipliziert mit monatlich aktiven Benutzern einer bestimmten App. Wenn die App mehr als die zulässigen Ressourcen verwendet, wird der Fehler ausgelöst. Fehler, Code: 4, Meldung: Anwendungsanforderungslimit erreicht

Überprüfen Sie diese Dokumentation https://developers.facebook.com/docs/reference/ads-api/api-rate-limiting/


Wo ist ein Beispiel dafür, wie Sie Anrufe auf Benutzerebene und Anrufe auf App-Ebene tätigen können? Es geht alles durch die App-ID, unabhängig davon, welches App-Level-Limit wäre. Sie sind nicht besonders gut mit Dokumentation dazu.
Josh Bedo

Der Link zur Dokumentation ist falsch. Richtig ist Developers.facebook.com/docs/graph-api/advanced/rate-limiting
Paiboon Panusbordee

Diese Antwort bezieht sich auf die Marketing-API, nicht auf die Graph-API wie das angeforderte OP.
John Washam

3

Gemäß FB-Dokumenten zählt jedes Element in einem Stapel als separater Aufruf.

Wir begrenzen derzeit die Anzahl der Anforderungen, die in einem Stapel enthalten sein können, auf 50, aber jeder Aufruf innerhalb des Stapels wird für die Berechnung der API-Aufruf- und Ressourcenlimits separat gezählt. Beispielsweise zählt ein Stapel von 10 API-Aufrufen als 10 Aufrufe, und jeder Aufruf innerhalb des Stapels trägt auf dieselbe Weise zu den CPU-Ressourcenlimits bei.

Bitte überprüfen Sie dies: https://developers.facebook.com/docs/graph-api/making-multiple-requests https://developers.facebook.com/docs/marketing-api/api-rate-limiting

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.