Ограничение API Podio

#podio

#podio

Вопрос:

Я работаю над одним продуктом, который извлекает все сведения об организации / рабочем пространстве и приложении клиента. Клиент может обновлять их в любое время.

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

Теперь, если этот клиент обновлял приложения несколько раз, например, 10 раз за час, то действие только для этого составляет 1000 вызовов API. Если у меня 50 таких активных пользователей, которые делают это, то это будет что-то около 50000.

AFAIK, я не могу выполнить столько вызовов API за час, так как справиться с этим сценарием. Я знаю, что многие приложения делают такие вещи, поэтому хочу понять, как все справляются с этим.

Комментарии:

1. Клайв, ты знаешь о Podio? Я просто хочу, чтобы каждый отвечал на вопросы, которые они действительно знают. Во-первых, Podio не предлагает никаких премиальных сервисов для этой вещи. Служба поддержки Podio сама попросила меня опубликовать этот запрос в stack overflow, чтобы любой другой разработчик, столкнувшийся с такой ситуацией, мог подсказать, что делать. Мы здесь не для того, чтобы получить какой-то волшебный код, мы сами заядлые разработчики и верим, что можем делиться идеями.

Ответ №1:

Если вам нужен более высокий лимит скорости, я бы посоветовал вам обратиться в службу поддержки Podio и спросить конкретно, что вам нужно. У нас есть внутренние рекомендации по оценке запросов такого рода, и при необходимости мы можем увеличить ограничение для вашего идентификатора пользователя и клиента.

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

Пожалуйста, ознакомьтесь с нашим официальным заявлением здесь: https://developers.podio.com/index/limits

Краткие сведения:

Общее ограничение составляет 5000 вызовов API в час, но если вызов API отмечен как «Скорость ограничена» в ссылке на API, вызов считается ресурсоемким и применяется более низкая скорость в 1000 вызовов в час. Если вы превысите ограничения скорости, API начнет возвращать 420 кодов ошибок HTTP для всех вызовов API. Ограничения скорости указаны для каждого пользователя в соответствии с ключом API.

Обращение в службу поддержки:

Если у вас есть проект, для которого требуется более высокий лимит скорости, свяжитесь support@podio.com с кратким описанием вашего проекта, вашего предполагаемого использования и client_id используемого вами ключа API.

Советы по использованию:

Советы по сокращению использования API

  • Избегайте выполнения запросов API внутри циклов. Вместо извлечения отдельных объектов внутри цикла, извлеките коллекцию объектов за одну операцию API. Например. фильтруйте элементы
  • Кэшируйте результаты, когда это возможно. Это особенно верно, когда вы отображаете данные для общего доступа (т. е. Каждый видит один и тот же результат).
  • Не проводите опрос на предмет изменений. Вместо опроса Podio, чтобы узнать, изменился ли ваш контент, используйте webhooks или push для получения уведомления. Это может сэкономить вам тысячи запросов: https://developers.podio.com/doc/hooks
  • Используйте ведение журнала, чтобы увидеть, сколько запросов вы делаете
  • Связывайте ответы с параметром «fields»

Комментарии:

1. Брэд, спасибо за такой подробный ответ. Я согласен с советами по использованию, но на самом деле я не хочу извлекать какие-либо данные элемента. Я хочу извлечь структуру каждого приложения, включая настройку каждого поля, сведения о каждом поле. Поэтому я не могу использовать структуру нескольких приложений за один вызов. Итак, для каждого приложения мне нужно сделать один вызов Podio. Основная причина, по которой мы задаем этот вопрос так рано, прежде чем наш продукт будет готов, заключается в том, что мы просто хотим убедиться, что после сборки продукта, если мы увидим проблему с ограничением скорости, наш продукт не будет использоваться. Итак, мы хотим завершить это решение на основе этого вопроса.

2. Hei @Bajarang, вы думали об использовании перехватов? Задача, которую вы пытаетесь достичь, кажется, хорошо решается с помощью перехватов приложений: developers.podio.com/doc/hooks

3. Привет @Pavlo Да, я думал о hook, но на самом деле в нашем случае использования мы будем обновлять данные, когда пользователь захочет. Вы можете подумать о том, как Globiflow обновляет данные по запросу пользователя. Итак, я удивлен, что у GF так много клиентов и как они передают ограничение API, потому что они используют непрерывные API для обновления элементов / добавления комментариев / обновления приложений и многого другого. Итак, каждый клиент использует множество действий каждый час, поэтому что-то вроде этого, я пытаюсь думать, что то, как они справились с ограничениями API и подобными вещами, мы можем попытаться приспособить к нашим требованиям.

Ответ №2:

Возможно, вы захотите создать прокси-приложение API; вам понадобится очередь обмена сообщениями и ограничитель скорости. Это позволило бы вам отслеживать потребление вызовов api между приложениями и пользователями.

Также стоит отметить: некоторые маршруты API дороже других, если они более ресурсоемкие на стороне Podio… Используемый термин ограничен скоростью: маршруты api с ограниченной скоростью привязаны к 1 тыс. вызовов в час, поэтому фактически стоят в 5 раз дороже обычных маршрутов.

Надеюсь, это поможет!