Вызовы API Facebook Graph, использующие расширение поля, по-разному учитывают ограничения скорости, чем групповые вызовы
Я ищу, чтобы оптимизировать мое приложение Facebook.
Сегодня я делаю пакетный вызов с четырьмя вызовами API-графиков:
/me
/me/friends
/me/likes
/me/feed
Если я изменю это на вызов API с одним графом, используя расширение поля следующим образом:
/me?fields=id,name,username,friends,likes,feed
Будет ли это теперь считаться одним ударом по API вместо четырех в целях ограничения скорости?
3 ответа
К сожалению, каждый вызов в пакете считается как вызов API, просто звонить им в пакете быстрее, поскольку это будет 1 запрос. Смотрите здесь документацию по Facebook API:
рамки
В настоящее время мы ограничиваем количество запросов, которые могут быть в пакете, до 50, но каждый вызов в пакете учитывается отдельно для целей расчета лимитов вызовов API и ресурсов. Например, пакет из 10 вызовов API будет считаться как 10 вызовов, и каждый вызов в пакете вносит одинаковый вклад в ограничение ресурсов ЦП.
Источник: https://developers.facebook.com/docs/reference/api/batch/
Основываясь на реальных испытаниях, я обнаружил, что расширение поля может рассчитывать на многократное использование при ограничении скорости. Например, начиная с тихого состояния, последовательность из 63 вызовов с расширенным полем для одного API (graph.facebook.com/IDENTITY/posts) привела нас к пределу в 600 вызовов.
Согласно Документам Facebook,
Функция расширения поля API-интерфейса Graph позволяет эффективно "объединять" несколько графовых запросов в один вызов.
Таким образом, ваши запросы выше будут представлять четыре вызова в пакетной форме и один вызов в расширенной форме поля.
Как я отметил в комментарии выше: пакет отправляет несколько запросов, но не обязательно связанных, в Facebook в одном запросе. Расширение поля похоже на выполнение соединений в SQL с помощью одного запроса.