Який ліміт викликів API API Graph?


80

Чи існує якесь обмеження кількості дзвінків на графічний api facebook? і якщо він є, то скільки дзвінків ми можемо робити щодня на додаток?


Відповіді:


58

Найкраща відповідь на це запитання з іншого форуму від Ash Rust у 2010 році:

"Після певного тестування та обговорення з командою платформи Facebook офіційного обмеження, про яке мені відомо або яке я можу знайти в документації, немає. Однак я виявив, що 600 дзвінків за 600 секунд, за маркер та за IP-адресу, де приблизно вони вас зупиняють. Я також бачив обмеження швидкості на основі додатків, але не маю цифр.

Як правило, один дзвінок на секунду не повинен обмежувати швидкість. На перший погляд, це здається дуже обмежувальним, але пам'ятайте, що ви можете групувати певні дзвінки та використовувати API підписки, щоб отримувати зміни ".


Наведена вище інформація застаріла станом на жовтень 2015 року. Зараз це 200 викликів API на кожного користувача у кожному 60-хвилинному вікні відповідно до https://developers.facebook.com/docs/graph-api/advanced/rate-limiting


12
@mangobug За маркер і за IP означає .. що саме? Чи означає це, що я можу подвоїти кількість дзвінків, якщо використовую один і той же маркер у 2 різних IP? Чи можу я подвоїти кількість дзвінків, якщо у мене є 2 маркери доступу, які все ще походять з тієї ж IP?
Henley Chiu,

2
@mangobug: Я думаю, що останній коментар / запитання Хенлі Чіу тут досить важливий :)
Ерік Каплун,

5
"але пам’ятайте, що ви можете групувати певні дзвінки". Facebook пояснює, що це не зменшить кількість ефективних викликів через API: "Пакетні дзвінки не зменшать кількість дзвінків API." developers.facebook.com/docs/marketing-api/…
heyitsbmo

3
Це більше не дійсне, див. Відповідь користувача> 200 дзвінків API на користувача за будь-яке 60-хвилинне вікно
Брендон Романо

1
як отримати більше користувачів для мого додатка? що користувач програми? де це показує, скільки я маю?
Фаржер

48

Зараз це офіційно :

Кожному додатку надається 200 викликів API для кожного користувача за будь-яке 60-хвилинне вікно .

З документації Facebook станом на 7 жовтня 2015 року , ось як працює обмеження швидкості на API Graph:

  • Обмеження швидкості здійснюється у вашому Facebook AppId. Якщо ваш додаток досягне обмеження тарифу, усі дзвінки, здійснені цим додатком, будуть обмежені не лише для кожного користувача.
  • Обмеження швидкості обчислюється шляхом взяття кількості користувачів у вашому додатку за попередній день та додавання сьогоднішніх нових входів. Це дає базову кількість користувачів, які має ваш додаток.

Наприклад, якщо у вашому додатку було 10 користувачів учора та 5 нових логінів сьогодні, це дасть вам базу з 15 користувачів. Це означає, що ваш додаток може здійснити ((10 + 5) * 200) = 3000 викликів API за будь-яке 60-хвилинне вікно.

Більше інформації тут: https://developers.facebook.com/docs/graph-api/advanced/rate-limiting

- Оновлення станом на 12 квітня 2016 р. -

Зараз Facebook має інформаційну панель обмеження тарифу , що набагато легше побачити, чи перевищує обмеження швидкості вашого додатка. Це виглядає так:

введіть тут опис зображення


AFAIK обмеження поширюється лише на програми з Graph API версії 2.5 і вище. У старих додатках ще немає цього обмеження.
Маріус

Чи можливо, якщо ми досягнемо межі, facebook, поверне нам помилку Error: read ECONNRESET???
Костянтинос Націос

Фактичне обмеження не для кожного користувача, це середнє значення для активних щоденних користувачів: "Ваш додаток може здійснювати 200 дзвінків на годину на користувача в сукупності. Наприклад, якщо у вашому додатку 100 користувачів, це означає, що ваш додаток може заробити 20000 дзвінків. Це не обмеження на одного користувача, тому один користувач може здійснити 19 000 з них, а інший - 1000. Цей ліміт розраховується на основі кількості дзвінків, здійснених за попередню годину. "
Джейсон Гоемаат,

2
Було б набагато простіше, якби вони поверталися estimatedCallsLeftForThisHour: 1234після кожного дзвінка.
Серпень

Приємна і точна відповідь!
Олексій Плютау

20

Відповідно до політики розробників Facebook "I. Особливості та функціональність", єдиними обмеженнями є:

(> 5M MAU) або (> 100M дзвінків API на день) або (> 50M показів на день).

(Мау означає користувачів щомісяця)

Там не сказано, що вони будуть робити після перевищення меж ...

Сьогодні я побіг до цього обмеження:

Дзвінки на mailbox_fql перевищили швидкість 300 дзвінків за 600 секунд.

Загалом кожна таблиця має різний набір обмежень, у більшості випадків fql не повертає більше 30 об'єктів на fql. Також мені здається, що ви можете перевищити обмеження для однієї таблиці і одночасно ви можете отримати доступ до іншої таблиці, питання полягає в тому, чи заблокований API (після перевищення ліміту) для всіх користувачів або лише для користувача, який має перевищив ліміти ... У будь-якому випадку, після того, як ви перевищите ліміт, вам доведеться почекати близько 10 хвилин, ніж це нормально.

Тож технічно кажучи, ви можете отримати не більше 300 * 30 об’єктів за 10 хвилин у таблиці mailbox_fql.


Ті , пороги , над яким контракт повинен бути на місці, а не жорсткий технічні обмеження, які у відповідь Mangobug в
Igy

насправді "Дзвінки на mailbox_fql перевищили швидкість 300 дзвінків за 600 секунд." означає, що це жорстка межа, яка застосовувалася в реальному житті. це також свідчить про те, що існує різне обмеження для різних таблиць. (Що правда).
Visgean Skeloru

6

З документації facebook

Обмеження рівня користувацького рівня

Це обмеження швидкості застосовується на рівні користувача для всіх викликів API, крім оголошень API.

Обмеження швидкості відбувається в реальному часі на розсувному вікні. Кожному дзвінку присвоюється оцінка. Існує максимальний бал n. Користувач накопичує рахунок протягом часу на основі зроблених дзвінків. Коли досягається максимальний бал, видається помилка дроселювання. Помилка, код: 17, повідомлення: досягнуто обмеження запиту користувача

Обмеження швидкості рівня додатка

Це обмеження швидкості застосовується глобально на рівні програми. Виклики оголошень API виключені.

Обмеження швидкості відбувається в реальному часі на розсувному вікні протягом однієї години. Статистика збирається за кількістю дзвінків та зроблених запитів, витраченим процесором часом, використовуваною пам’яттю для кожного додатка. Існує обмеження для кожного ресурсу, помножене на кількість активних користувачів щомісяця даної програми. Коли програма використовує більше дозволених ресурсів, помилка видається. Помилка, код: 4, повідомлення: досягнуто ліміту запиту програми

перевірте цю документацію https://developers.facebook.com/docs/reference/ads-api/api-rate-limiting/


Де приклад того, як ви можете здійснювати дзвінки на рівні користувача та дзвінки на рівні програми? Все це проходить через ідентифікатор програми незалежно від того, який би був обмеженням рівня програми? Вони не дуже чудові з документацією щодо цього.
Джош Бедо

Посилання на документацію неправильне. Правильним є developers.facebook.com/docs/graph-api/advanced/rate-limiting
Paiboon Panusbordee

Ця відповідь стосується Маркетингового API, а не Графічного API, як це вимагає ОП.
Джон Уошем

3

Згідно з документами FB, кожен елемент у партії вважається окремим викликом.

В даний час ми обмежуємо кількість запитів, які можуть бути в пакеті, до 50, але кожен виклик у пакеті враховується окремо для цілей обчислення обмежень викликів API та обмежень ресурсів. Наприклад, партія з 10 викликів API вважатиметься 10 викликами, і кожен виклик у пакеті таким же чином вносить вклад у обмеження ресурсів ЦП.

Перевірте це: https://developers.facebook.com/docs/graph-api/making-multiple-requests https://developers.facebook.com/docs/marketing-api/api-rate-limiting

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.