Вызовы 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 с помощью одного запроса.

Другие вопросы по тегам