Публикация

подписчиков: 8 Подписаться
0
Avatar

Почему АПИ медленно работают?

Пытался по АПИ выгрузить из МС заказы с экспандом по товарам и контрагентам и фильтрацией по нескольким параметрам. В итоге выгрузилось 3940 заказов. каждый запрос выполнялся 5-6 секунд (по 100 заказов в запросе). Ради интереса попробовал экспорт заказов в Excel 13000 заказов сгенерировались в файл примерно за 2 минуты. Вопрос - как так получается, что ваши АПИ так медленно работают? на 4000 заказов по АПИ выходит 200 секунд (в лучшем случае), а на экспорт в эксель 13000 заказов - 120 секунд. И вопрос на миллион долларов - КОГДА ВЫ НАКОНЕЦ СДЕЛАЕТЕ НОРМАЛЬНЫЕ АПИ ДЛЯ РАБОТЫ С БОЛЬШИМИ ОБЪЕМАМИ ДАННЫХ?

Может конечно я тупой и просто не знаю как правильно применять ваши АПИ. Тогда посоветуйте как правильно. Примерчик какой-нибудь дайте.

Максим

Войдите в службу, чтобы оставить комментарий.

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

1
Avatar

Вы, конечно, свалили все в одну кучу... Но МС это не оправдывает.

Да, МС не использует в веб-интерфейсе свой-же API. Это понятно и по скорости, и по отсутствию возможности через API делать то, что умеет вебинтерфейс, касаемо фильтрации.

Это хорошо что еще запрос выполнился не вылетев по таймауту у Вас... :) 
 
Мое личное решение в одном: я кеширую основные сведения о сущностях/документах и их связях по которым фильтрую на своей стороне в базе находя нужные идентификаторы. Это не сложно сделать. И когда получаются простые идентификаторы нужных документов - их через API можно быстро запросить. Одна беда, вебхуками, или с n-периодичностью нужно кеш свой актуализировать.. 

Roman Bolgov 1 голос
Действия с комментариями Постоянная ссылка
1
Avatar

я тоже храню идентификаторы. например для формирования заказов в МС. Но мне так же надо периодически скачивать заказы из МС. вот тут-то и кроется главная проблема.

Максим 1 голос
Действия с комментариями Постоянная ссылка
0
Avatar

Вебхуками не стоит. В текущей версии АПИ можно ставить только 1 вебхук на сущность, поэтому использование вебхуков в своих скриптах является блокиратором интеграций с другими сервисами (например, с RetailCRM), которым тоже нужны вебхуки. Grr.

Для себя сделали итеративную выгрузку всего по ключу (updated, id) раз в 2 минуты.

Не смотря на все улучшения, АПИ по большей частью остаётся лишь инструментом для импорта-экспорта данных, и для нормальной работы приходится хранить у себя полную копию всего.

Вася Садовников 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Поскольку тут форум разработчиков, то по своим личным наблюдениям, фишка для удобства дебага, стала абсолютной "must have" для меня самого. Может кому-то понравится, и кто-то тоже возьмет на вооружение:

Сохраняю информацию о вебхуках, а также запросы в API и полученные ответы временно в базе. Небольшой лог с ротацией за 3-5 последних дней. Когда случается раскосяк какой-то удобно по логам отловить.

В логах храню направление запроса (исходящий/входящий) , метод (GET, PUT..), http код ответа, с какого IP ушло, с какого пришло, время отправки, время приема, какое было тело запроса, какой был ответ от МС ограничиваю первыми 2000 символами (а то подчас даже размещая в LONG_TEXT не хотел). 

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

 

Roman Bolgov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

мда. интеграция удобная. а если хуки перестанут приходить. например на изменение заказа (судя по темам такое бывает не редко). как вы потом определите - какие изменения произошли за этот период?

а где поддержка? третий день тема висит. а ответ, так и не соблаговолили дать

Максим 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Добрый день!
В плане разработки на ближайшие полгода есть задача на реализацию асинхронных запросов, что позволит комфортнее работать с большими данными.

 

Ivan Pivkin 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

и почему запросы по АПИ со 100 позициями 5-6 секунд выполняются? у вас в планах есть исправление этого?

Максим 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Максим, при ваших запросах к АПИ применяется фильтрация, что накладывает дополнительные затраты по времени. При выгрузке в Excel такой фильтрации нет.

Необходимо понимать, что АПИ не только делает запрос к базе данных, а имеет большую бизнес-логику, прежде чем сформировать запрос - применить фильтры, параметры, валидация и т.д.

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

Ivan Pivkin 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

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

Максим 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

кроме того у нас хуки на заказы уже заняты. а у вас можно поставить только одну хуку на одно событие. есть еще варианты?

Максим 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Увеличение лимитов, а также увеличение числа возможных веб-хуков на одну сущность запланированы в следующей версии. 

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

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

Других вариантов в текущей ситуации мы предложить не сможем.

Екатерина Евтухова 0 проголосовали
Действия с комментариями Постоянная ссылка