![]() |
#1 |
Участник
|
Есть ли настройка , ограничивающая объем возвращаемых данных через get- request
Есть кастомный REST API сервис , sync, создан кем-то несколько лет назад, возвращает stock levels из D365 .
Стал не возвращать данные, если большой объем данных (там критерий есть в запросе , если их подкрутить так, чтобы выборка была меньше, то все возвращает) Я смотрю, когда он формирует данные на sql, то ничего, вроде. никаких запросов не висит. То есть, проблема ,как я понимаю, имено в сформированном объеме, что обратно отправляет get request, а не долгом офрмировании набора данных Есть ли какие-то настройки, что отвечают за ограничение объема данных Или , может, еще что-то , что может к такому поведению приводить? Спасибо. Надо как всегда очень сильно срочно, поэтому любым идеям буду благодарна, куда посмотреть, пока меня не линчевали на месте. Последний раз редактировалось Lankey; 17.04.2025 в 14:09. |
|
![]() |
#2 |
Участник
|
Посмотрел бы для начала что получает аксапта на входе: возможно трабла к примеру в длине строки типа данных при приеме типа принимаю данные в 10 тысяч символов в переменную типа Description и тп
|
|
![]() |
#3 |
Участник
|
Здравствуйте.
Деталей мало. Есть rest api сервис, ходит в Аксапту. К нему кто-то обращается? Он не отдаёт информацию? Такая проблематика? Код ошибки HTTP какой отдаёт? С превышением времени ожидания отваливается или трафика допустимого? Это всё настраивается при установлении подключения как параметры. |
|
![]() |
#4 |
Участник
|
Спаибо.
Сторонний сервер отпраляет в D365 get запрос (На стороне d365 создан кастомныйй сервис) Этот сторонний сервер не получает ответа. Они уже установили таймаут в 1 час, но ответа нет. Если выборка меньше(критерии подкручивают), то 200 возвращается и данные Я тестирую в postman. Вижу такую же картину Максимум , что я в ответе от Tier2 смогла получить - 1.75 MB json ответ(внутри 78 294 строк, но строки нерепрезентативно, тк это json) за 3.5 минуты . Если в параметры меняю так, чтобы ответ был чуть побольше(больше данных созвращалось), то часами "крутится" и ответа не возвращает Последний раз редактировалось Lankey; 17.04.2025 в 18:16. |
|
![]() |
#5 |
Участник
|
Трафик сетевой проверьте в этот момент (пакеты если надо перехватите) - идёт между службами?
Если ошибку не получаете - трафик должен идти между ними. Соответственно, исследуйте вопрос качества этого трафика. |
|
![]() |
#6 |
Участник
|
1) Немного не поняла Вашу идею. Там один ответ формируется (один json response на этот get request). Поэтому, думаю, что то пока json не сформируется, трафика не будет
И чем его лучше/удобнее перехватывать? Установила Postman Interceptor extension, подойдет? UPD: Postman Interceptor extension стоит. В tab браузера открыт postman .Запускаю Interceptor, отсылаю через postman запрос, который возвращает 200 и малый объем данных. Не нахожу в Interceptor записей для URL запроса. Почему (( 2) Может быть так, что проблема в формировании Json ? То есть, данные с sql получает, а вот сериализация в json отнимает много времени или ресурсов? 3) Я пытаюсь отловить в Trace parser то, что происходит. То есть, запускаю в браузере Trace и из постмана отправляю сразу запрос. Но почему-то в Trace parser не вижу следов выполнения класса, ответственного за сервис, ни отправляемого им sql запроса. Это нормально? Последний раз редактировалось Lankey; 18.04.2025 в 01:49. |
|
![]() |
#7 |
Участник
|
Да, коммуникация с БД (если сервис это подразумевает) должна завершиться перед формированием ответа на запрос. Если до этапа коммуникации дело не доходит - подключение у сервиса должно отваливаться по time out. Так понимаю, сервис-слушатель этим и страдает, отсюда и повышение времени таймаута имело место?
Postman - другая история. Он, согласно настройкам по умолчанию, ждёт до скончания времён. На каких этапах может возникать проблема с позиции сервиса Аксапты?
Цитата:
Цитата:
А) Аксапта получает запрос; Б) Пытается его обработать. PS Если текущее состояние системы не позволяет пользователям выполнять должностные обязанности и является критичным - можете разбить работы по решению проблемы на 2 задачи: - Выявление и устранение первопричины; - Разбивка 1-го большого запроса на N маленьких (постраничная загрузка / порционирование). PS2 Признаком хорошего тона является не заставлять сторону-потребителя ждать. Если такое необходимо по причине сложности логики работы функции сервиса - используется асинхронное взаимодействие. Последний раз редактировалось Товарищ ♂uatr; 18.04.2025 в 12:36. |
|
![]() |
#8 |
Участник
|
Upd: не знаю пока, чем история закончится, но я закомментила весь код обработки записей и поставила sleep.
Если sleep превышает 5 минут, но ответ не возвращается в postman Если меньше (4 мин 30 сек), то возвращается. Соответственно, видимо, есть какое-то ограничение. На T2 пока не проверяла, только на VM DEV Предложила то же самое попробовать в T2 или сразу в микрософт отдать вопрос , тк в документации не нахожу настроек или ограничений на 5 минут. Последний раз редактировалось Lankey; 23.04.2025 в 10:42. |
|
![]() |
#9 |
Участник
|
Цитата:
Сообщение от Lankey
![]() Upd:
Если sleep превышает 5 минут, но ответ не возвращается в postman Если меньше (4 мин 30 сек), то возвращается. Соответственно, видимо, есть какое-то ограничение. На T2 пока не проверяла, только на VM DEV Предложила то же самое попробовать в T2 или сразу в микрософт отдать вопрос , тк в документации не нахожу настроек или ограничений на 5 минут. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |