"разумное" использование веб-API для синхронизации данных

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

В данном конкретном случае веб-приложение - Asana, но я уже сталкивался с подобными ситуациями ранее с другими сервисами. Есть ли способ узнать, злоупотребляете ли вы сервисом из-за чрезмерных вызовов API? Я знаю, что не собираюсь работать в DOS с такой компанией, как Asana, но я не могу избавиться от ощущения, что должен быть лучший способ, чем делать ~150 тыс. Запросов в день.

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

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

1 ответ

Решение

(Я работаю в Асане)

Это отличный вопрос, точнее набор вопросов.

Вы разрабатываете систему, которая будет неоднократно делать запросы для каждого объекта. Что будет происходить с ростом числа объектов? Даже если бы ваша первоначальная частота запросов была разумной, это может привести к проблемам с масштабируемостью. Более масштабируемое решение - это решение, которое масштабируется в зависимости от количества изменений в системе. Это также будет расти со временем, но гораздо медленнее - количество изменений, которые может вносить один пользователь в день, является относительно постоянным, но общее количество созданных им объектов со временем растет и растет. Поэтому мой первый совет - избегать подобных действий, а вместо этого найти способ обнаруживать изменения и просто реагировать на них. Было бы интересно узнать, почему вы чувствуете, что потеряете способность, используя этот подход.

Теперь я случайно узнал, что API-интерфейс Asana в настоящее время не предоставляет вам дружественного механизма, позволяющего просто обнаруживать изменения в системе. Это часто запрашиваемая функция, и мы изучаем ее, хотя я, к сожалению, не могу обещать дату доставки. Таким образом, у вас может не остаться иного выбора, кроме как опросить нашу систему на данный момент.

Что касается вежливости по отношению к API, многие поставщики услуг устанавливают ограничения на использование API, чтобы предотвратить случайное или злонамеренное использование API, которое может повлиять на обслуживание других клиентов - Asana не является исключением. Иногда эти лимиты публикуются, а иногда нет, и нет стандартного лимита: все зависит от сервиса. Но вам очень любопытно, что вам интересно узнать об ограничениях обслуживания.

Тем не менее, 150 тыс. Запросов в день для Asana API - это много. Если бы все наши пользователи API давали нам такой большой трафик, мы могли бы обслуживать больше запросов в день, чем Google Web Search, и мы еще не настолько масштабируемы.:) Технически, иногда мы можем обрабатывать запросы на этом томе от одного пользователя.

Если вы должны опрашивать, попробуйте опрашивать с интервалами, как 15 минут. Но, пожалуйста, не опрашивайте все ваше рабочее пространство в этот период времени; это может быть слишком много трафика / данных. Мы работаем над тем, чтобы предложить вам лучшее решение.

Если вам случится сделать слишком много запросов к API Asana, вы получите код состояния HTTP 429 вместо желаемого ответа; Вы можете прочитать больше об этом здесь ( https://asana.com/developers/documentation/getting-started/errors).

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