2012-01-10 12 views
24

Widziałem limit 600 wywołań/limit 600 sekund wspomniany przez niektórych (np. Na quora).Wykres Facebook Limit stawek interfejsu API i żądania wsadowe

Co chcę wiedzieć, czy mogę zrobić 600 batch żądań w 600 s (żądanie zbiorcze składa się z maksymalnie 50 żądań).

+0

„Obecnie ograniczyć liczbę żądań wsadowych do 50 . " - [Facebook] (https://developers.facebook.com/docs/reference/api/batch/). 50 co? Prośby na minutę, dzień, użytkownik !? – Xeoncross

+0

Chciałem poznać to samo. 50 równoczesnych żądań, próśb na minutę, dziennie, za zmianę pieluchy ??? –

+2

Hmm .. Chciałem wyśmiać FB, ale czytanie ich dokumentacji wyjaśnia rzeczy: "Obecnie ograniczamy liczbę wniosków, które mogą być w partii do 50, ale każde wywołanie wewnątrz partii jest liczone osobno dla celów obliczeniowych Limity wywołań API i limity zasobów Na przykład partia 10 wywołań API będzie liczona jako 10 wywołań, a każde wywołanie w ramach partii przyczynia się do limitów zasobów procesora w ten sam sposób. " –

Odpowiedz

11

Programowo należy zająć się ograniczeniem szybkości, sprawdzając następujący komunikat o błędzie. Powinieneś wtedy umieścić pętlę oczekiwania przed następnym połączeniem, jeśli napotkasz błąd. Jedno z moich kont aplikacji o dużym natężeniu ruchu obserwuje ten błąd i zwolni.

Od: https://developers.facebook.com/docs/bestpractices/

Rate Limited (API_EC_TOO_MANY_CALLS) Jeśli aplikacja robi zbyt wiele połączeń, serwer API może ocenić ogranicza się automatycznie, zwrócenie "API_EC_TOO_MANY_CALLS" błąd. Zasadniczo nie powinno to mieć miejsca. Jeśli tak, to dlatego, że Twoja aplikacja została określona jako do wykonywania zbyt wielu wywołań interfejsu API. Powtórz kod, aby wykonać jak najmniej połączeń, aby zachować wymaganą wygodę użytkownika. Powinieneś także unikać skomplikowanych zapytań FQL. Aby zrozumieć, , jeśli aplikacja jest dławiona, przejdź do Insights i kliknij "Throttling".

edit

Jak donosi Igły w komentarzu wątku, każdy wniosek, że liczy w partii jako 1. Dla przykładu 600 będącego maksymalną granicę, co oznacza, że ​​można wystrzelić 15 żądań wsadowych zawierające po 50 połączeń.

+8

Dzięki za wskazanie najlepszych praktyk. Jednak moje pytanie brzmi, czy żądania w pakiecie i pojedyncze żądania liczą się jako 1 żądanie względem limitu. – daremon

+0

Jeśli w dokumentach na Facebooku nie ma informacji o tym, co jest robione, należy zachować ostrożność, aby nie pozwolić na to, aby Twoje konto programisty zostało oznaczone/unieważnione i aby monitorować błędy zwracane przez interfejs API. Najlepszą praktyką jest monitorowanie tych błędów i robienie tego, co mówią. – DMCS

+0

Link nie działa? Muszę wprowadzić ograniczenie stawki, jaki rodzaj odpowiedzi otrzymam? –

6

Z mojego doświadczenia wynika, że ​​liczą indywidualne żądania niezależnie od sposobu ich wykonania (w partii lub nie).

Na przykład, jeśli próbuję wykonać 1 partia/sek, zawierającą po 10 żądań, wkrótce otrzymam komunikat "ZA WIELE POŁĄCZEŃ".

Jeśli robię 1 partia/10 sekund, każda partia zawierająca 10 żądań, nigdy nie widzę zbyt wielu wywołań.

Osobiście nie widzę powodu, aby preferować serie w porównaniu do zwykłych wywołań interfejsu API.

2

Połączenia pakietowe są zliczane dla każdej pozycji w partii. Jedno wywołanie wsadowe z 50 pozycjami jest odpowiednikiem 50 wywołań api za pomocą wykresu.

5

Zgodnie z dokumentami FB, każdy element w partii liczy się jako osobne połączenie.

Obecnie ograniczyć liczbę wniosków, które mogą być w partii do 50, ale każda rozmowa w partii jest liczony oddzielnie dla celów obliczania limitów połączeń API i ograniczenia zasobów. W przypadku przykładu , partia 10 wywołań API będzie liczona jako 10 wywołań, a każde wywołanie w obrębie partii przyczynia się do limitów zasobów procesora w tym samym trybie .

Cytat z: https://developers.facebook.com/docs/reference/api/batch/

nie mam dowodów empirycznych jednak.

David

3

mam dość duże i bolesne doświadczenia teraz z Facebook API i mogę stwierdzić, że:

  • Jeśli żądanie partia zawiera 50 wnioski, to liczy się jako 50 wniosków na Facebook
  • 1 żądanie! = 1 połączenie. Facebook ma własną definicję tego, czym jest połączenie. Jeśli twoja prośba jest duża, zwróć dużo danych lub zużyj dużo procesora, to będzie się liczyć jako kilka połączeń.

Najczęstsze wywołanie API wykresu, które robię zawiera wiele zagnieżdżonych pól i zauważyłem, że osiągnąłem "600 połączeń/600 sekund" po wykonaniu tylko 200 razy. Więc w zasadzie liczyć na to wezwanie 3 w moim przypadku ...

Masz wiele innych limitów stóp, ale żaden z nich nie są właściwie udokumentowane ...

Powiązane problemy