Jaki jest limit wywołań interfejsu Graph API na Facebooku?

Odpowiedzi:

58

Najlepsza odpowiedź na to pytanie z innego forum , od Ash Rust w 2010 roku:

„Po kilku testach i dyskusjach z zespołem platformy Facebooka nie ma oficjalnego limitu, o którym wiem lub który mogę znaleźć w dokumentacji. Jednak znalazłem 600 połączeń na 600 sekund, na token i na adres IP, aby dowiedzieć się, gdzie oni cię powstrzymują. Widziałem też pewne ograniczenia szybkości na podstawie aplikacji, ale nie mam żadnych liczb.

Co do zasady, jedno połączenie na sekundę nie powinno mieć ograniczonej szybkości. Na pozór wydaje się to bardzo restrykcyjne, ale pamiętaj, że możesz grupować niektóre wywołania i używać interfejsu API subskrypcji, aby uzyskać zmiany ”.


Powyższe informacje są już nieaktualne w październiku 2015 r. Obecnie jest to 200 wywołań API na użytkownika w dowolnym 60-minutowym oknie zgodnie z https://developers.facebook.com/docs/graph-api/advanced/rate-limiting

Zain Khan
źródło
12
@mangobug Per token i per IP oznacza… co dokładnie? Czy to oznacza, że ​​mogę podwoić liczbę połączeń, jeśli używam tego samego tokena w 2 różnych adresach IP? Czy mogę podwoić liczbę połączeń, jeśli mam 2 tokeny dostępu, nadal pochodzące z tego samego adresu IP?
Henley Chiu,
2
@mangobug: Myślę, że ostatni komentarz / pytanie Henleya Chiu jest tutaj dość kluczowy :)
Erik Kaplun
5
„ale pamiętaj, że możesz grupować niektóre wywołania”. Facebook wyjaśnia, że ​​nie zmniejszy to liczby efektywnych wywołań API do Twojego limitu: „Grupowanie wywołań nie zmniejszy liczby wywołań API”. developers.facebook.com/docs/marketing-api/…
heyitsbmo
3
To już nie jest ważne, zobacz odpowiedź użytkownika> 200 wywołań API na użytkownika w dowolnym 60-minutowym oknie
Brandon Romano
1
jak zdobyć więcej użytkowników mojej aplikacji? kim jest użytkownik aplikacji? gdzie to pokazuje, ile mam?
Farzher
48

Teraz to oficjalne :

Każda aplikacja otrzymuje przydział 200 wywołań API na użytkownika w dowolnym 60-minutowym oknie .

Z dokumentacji Facebooka z 7 października 2015 r. , Oto jak działa ograniczanie szybkości w Graph API:

  • Ograniczanie szybkości odbywa się na Twoim AppId na Facebooku. Jeśli Twoja aplikacja osiągnie limit szybkości, wszystkie połączenia wykonane dla tej aplikacji będą ograniczone nie tylko na podstawie liczby użytkowników.
  • Ograniczenie szybkości obliczane jest na podstawie liczby użytkowników, których Twoja aplikacja miała poprzedniego dnia i dodania dzisiejszych nowych logowań. Daje to podstawową liczbę użytkowników, których ma Twoja aplikacja.

Na przykład, jeśli Twoja aplikacja miała wczoraj 10 użytkowników i 5 nowych logowań dzisiaj, dałoby to bazę 15 użytkowników. Oznacza to, że Twoja aplikacja może wykonać ((10 + 5) * 200) = 3000 wywołań interfejsu API w dowolnym 60-minutowym oknie.

Więcej informacji tutaj: https://developers.facebook.com/docs/graph-api/advanced/rate-limiting

- Aktualizacja z dnia 12 kwietnia 2016 r. -

Facebook ma teraz pulpit limitów stawek, który jest znacznie łatwiejszy do sprawdzenia, czy limit kursu Twojej aplikacji przekracza. To wygląda tak:

wprowadź opis obrazu tutaj

Alfeu
źródło
AFAIK, limit dotyczy tylko aplikacji z Graph API w wersji 2.5 i nowszych. Starsze aplikacje nie mają jeszcze tego limitu.
Marius,
Czy to możliwe jak przekroczymy limit, facebook zwróci nam błąd Error: read ECONNRESET???
Konstantinos Natsios
Rzeczywisty limit nie jest na użytkownika, to średnia dzienna liczba aktywnych użytkowników: „Twoja aplikacja może wykonywać łącznie 200 połączeń na godzinę na użytkownika. Na przykład, jeśli Twoja aplikacja ma 100 użytkowników, oznacza to, że może ona zarobić 20 000 połączeń. Nie jest to limit na użytkownika, więc jeden użytkownik może wykonać 19 000 takich połączeń, a inny 1000. Ten limit jest obliczany na podstawie liczby połączeń wykonanych w ciągu ostatniej godziny ”.
Jason Goemaat
2
Byłoby o wiele łatwiej, gdyby wracali estimatedCallsLeftForThisHour: 1234po każdym telefonie.
sierpień
Miła i precyzyjna odpowiedź!
Alex Pliutau
20

Zgodnie z polityką deweloperów Facebooka „I. Funkcje i funkcjonalność” jedynymi ograniczeniami są:

(> 5 mln MAU) lub (> 100 mln wywołań API dziennie) lub (> 50 mln wyświetleń dziennie).

(Mau oznacza miesięcznych użytkowników)

Nie mówi, co zrobią po przekroczeniu limitów ...

Dzisiaj doszedłem do tego ograniczenia:

Połączenia z mailbox_fql przekroczyły współczynnik 300 połączeń na 600 sekund.

Ogólnie każda tabela ma inny zestaw limitów, w większości przypadków fql nie zwróci więcej niż 30 obiektów na fql. Wydaje mi się również, że można przekroczyć limity do jednej tabeli i jednocześnie można uzyskać dostęp do innej tabeli, pytanie brzmi, czy api jest blokowane (po przekroczeniu limitu) dla wszystkich użytkowników, czy tylko dla użytkownika, który ma przekroczono limity ... W każdym razie po przekroczeniu limitu trzeba poczekać około 10 minut, niż jest w porządku.

Więc technicznie rzecz biorąc, możesz uzyskać maksymalnie 300 * 30 obiektów na 10 minut w tabeli mailbox_fql.

Visgean Skeloru
źródło
To są progi, powyżej których musi być zawarta umowa, a nie twarde ograniczenia techniczne, które są w odpowiedzi Mangobug
Igy
nie do końca „Połączenia z mailbox_fql przekroczyły częstotliwość 300 połączeń na 600 sekund”. oznacza, że ​​jest to twardy limit, który został narzucony w prawdziwym życiu. Sugerowałoby to również, że istnieje inny limit dla różnych tabel. (Co jest prawdą).
Visgean Skeloru
6

Z dokumentacji na Facebooku

Ograniczanie stawki na poziomie użytkownika

To ograniczenie szybkości jest stosowane na poziomie użytkownika dla wszystkich wywołań API z wyjątkiem interfejsów API reklam.

Ograniczenia kursu mają miejsce w czasie rzeczywistym w przesuwanym oknie. Każde wezwanie otrzymuje punktację. Maksymalny wynik to n. Użytkownik gromadzi punkty w czasie na podstawie wykonanych połączeń. Po osiągnięciu maksymalnego wyniku zgłaszany jest błąd ograniczania przepustowości. Błąd, kod: 17, komunikat: Osiągnięto limit żądań użytkownika

Ograniczanie szybkości na poziomie aplikacji

To ograniczenie szybkości jest stosowane globalnie na poziomie aplikacji. Wywołania interfejsu API reklam są wykluczone.

Ograniczanie kursu odbywa się w czasie rzeczywistym w przesuwanym oknie przez ostatnią godzinę. Statystyki są gromadzone dla liczby wykonanych połączeń i zapytań, czasu spędzonego na procesorze, pamięci używanej dla każdej aplikacji. Istnieje limit dla każdego zasobu pomnożony przez miesięczną liczbę aktywnych użytkowników danej aplikacji. Gdy aplikacja wykorzystuje więcej niż dozwolone zasoby, zgłaszany jest błąd. Błąd, kod: 4, komunikat: Osiągnięto limit żądań aplikacji

sprawdź tę dokumentację https://developers.facebook.com/docs/reference/ads-api/api-rate-limiting/

Ansen E Anand
źródło
Gdzie jest przykład, w jaki sposób można wykonywać połączenia na poziomie użytkownika i na poziomie aplikacji? Wszystko przechodzi przez identyfikator aplikacji, niezależnie od tego, jaki byłby limit poziomu aplikacji? Nie są najlepsi z dokumentacją na ten temat.
Josh Bedo
Link do dokumentacji jest nieprawidłowy. Prawidłowy to developers.facebook.com/docs/graph-api/advanced/rate-limiting
Paiboon Panusbordee
Ta odpowiedź dotyczy Marketingowego API, a nie Graph API, o które pytał OP.
John Washam
3

Zgodnie z dokumentacją FB każdy element w partii liczy się jako osobne wywołanie.

Obecnie ograniczamy liczbę żądań, które mogą znajdować się w partii, do 50, ale każde wywołanie w partii jest liczone osobno na potrzeby obliczania limitów wywołań interfejsu API i limitów zasobów. Na przykład partia 10 wywołań interfejsu API będzie liczona jako 10 wywołań, a każde wywołanie w partii przyczynia się do ograniczenia zasobów procesora w ten sam sposób.

Sprawdź to: https://developers.facebook.com/docs/graph-api/making-multiple-requests https://developers.facebook.com/docs/marketing-api/api-rate-limiting

Mujibur
źródło