График Facebook API ограничение скорости и пакетных запросов - PullRequest
26 голосов
/ 10 января 2012

Я видел ограничение скорости 600 вызовов / 600 секунд, упомянутое некоторыми (например, на quora ).

Что я хочу знать, так это разрешено ли мне делать 600 пакетных запросов за 600 секунд (пакетный запрос состоит из до 50 запросов).

Ответы [ 5 ]

12 голосов
/ 10 января 2012

Вы должны обработать ограничение скорости программно, проверив следующее сообщение об ошибке.Затем вы должны включить цикл ожидания времени перед следующим вызовом, если вы столкнетесь с ошибкой.Одна из моих учетных записей приложений с высоким трафиком отслеживает эту ошибку и замедляется.

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

Скорость ограничена (API_EC_TOO_MANY_CALLS) Если ваше приложениеделает слишком много звонков, сервер API может ограничить вас автоматически, возвращая ошибку «API_EC_TOO_MANY_CALLS».Как правило, этого не должно происходить.Если это так, то это потому, что ваше приложение определено как слишком большое количество вызовов API.Итерируйте свой код, чтобы сделать как можно меньше звонков, чтобы поддерживать необходимый пользовательский опыт.Вам также следует избегать сложных запросов FQL.Чтобы понять, регулируется ли ваше приложение, перейдите в Insights и нажмите «Регулирование».

edit

Как сообщил Igy в ветке комментариев, каждыйзапрос в этой партии считается равным 1. Для вашего примера 600 является максимальным пределом, это означает, что вы можете отменить 15 пакетных запросов, содержащих по 50 вызовов каждый.

8 голосов
/ 11 апреля 2013

Согласно документации FB, каждый элемент в партии считается отдельным вызовом.

В настоящее время мы ограничиваем количество запросов, которые могут быть до 50, но каждый вызов в пакете учитывается отдельно для цели расчета лимитов вызовов API и ресурсов. За Например, партия из 10 вызовов API будет считаться как 10 вызовов, и каждый вызов в рамках пакета способствует ограничению ресурсов процессора в том же образом.

Цитируется из: https://developers.facebook.com/docs/reference/api/batch/

Однако у меня нет эмпирических доказательств.

David

6 голосов
/ 21 ноября 2012

По моему опыту, они считают индивидуальные запросы независимо от способа их выполнения (в пакетном режиме или нет).

Например, если я пытаюсь выполнить 1 пакетную / сек, содержащую 10 запросов каждый, яскоро получу «СЛИШКОМ МНОГО ЗВОНКОВ».

Если я делаю 1 серию / 10 секунд, каждая партия, связывающая 10 запросов, я никогда не вижу СЛИШКОМ МНОГО ЗВОНКОВ.причина предпочитать пакеты по сравнению с обычными вызовами API.

5 голосов
/ 29 августа 2014

У меня довольно большой и болезненный опыт работы с API Facebook, и я могу сказать, что:

  • Если пакетный запрос содержит 50 запросов, то он считается 50 запросами на Facebook
  • 1 запрос! = 1 звонок. У Facebook есть собственное определение того, что такое звонок. Если ваш запрос большой, возвращает много данных или использует много процессора, он будет считаться несколькими вызовами.

Самый частый вызов API графа, который я делаю, содержит много вложенных полей, и я заметил, что достиг "600 вызовов / 600 секунд" после выполнения всего 200 раз. Таким образом, в моем случае этот счетчик вызовов для 3 ...

У вас есть много других ограничений скорости, но ни один из них не задокументирован должным образом ...

2 голосов
/ 30 марта 2013

Пакетные вызовы определенно учитываются для каждой позиции в пакете. Один пакетный вызов с 50 наименованиями эквивалентен 50 вызовам API с использованием графика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...