time out узла rest api

0 голосов
kirill.n в категории Как сделать...
Время выполнения узла, который вызывается запросом rest api около 1ч - 1ч30м, при попытке вызвать такой запрос через узел rest-api, после минутного ожидания падает ошибка time_out, подскажите, как быть?

Ответ: 1 шт.

0 голосов
tatyana.pavlova
Вам необходимо в настройках подключения установить таймаут обмена данными часа на 2 (это 7200000 мс).

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

Подробнее см. в статье: https://help.loginom.ru/userguide/integration/connections/list/rest-service.html
tatyana.pavlova

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

Имеются следующие плюсы:

1. Устойчивость к сбоям и обрывам сети (т.к. каждый "маленький" запрос будет выполняться быстро, следовательно меньшая вероятность не получить ответ).

2. Возможность задействовать параллелизм, если это позволяет сервис. В Loginom для этого можно использовать Цикл с параллельной обработкой - https://help.loginom.ru/userguide/processors/control/loop.html.

3. Более эффективно использовать ресурсы (в том числе оперативную память). Нет необходимости резервировать оперативную память для приема большого объёма ответа. Данные, которые приходят пачками, можно также и обрабатывать, и выгружать пачками в цикле. В данном случае используется свойство цикла освобождения памяти, выделенной на каждую итерацию.

Между пунктами 2 и 3 вы можете выявить оптимальное для вас решение. Необходимо найти баланс (какой объём пачек данных, какое количество потоков при параллельной обработке).

tatyana.pavlova

Также в качестве обходных вариантов:
1. Вы можете использовать осуществление rest-запроса с контролируемой задержкой ответа
2. Опубликованную логику нужно перенастроить на "асинхронную задачу + пулинг статуса". Т.е. общение с опубликованным сервисом должно быть многоэтапным:

“запуск → принятие задачи в работу и возврат job_Id в очереди задач → периодический опрос статуса выполнения задачи по job_Id → если готово, забираем результат”.

Это стандартное решение для долго выполняющихся задач.

kirill.n

В настройках подключения я выставил Таймаут обмена данными (мс) = 7 200 000, однако узел запроса падает по истечению 60 секунд, с чем это может быть связано?

tatyana.pavlova

Уточните, у вас в настройках rest-запроса стоит у параметра «Таймаут обмена данными» значение 0?

Попробуйте установить настройки из скриншота ниже:

 

kirill.n
Я выставил настройки подключения согласно скрину, однако это не помогло, все также выдает ошибку после 60 секунд
tatyana.pavlova

Свяжитесь с поддержкой по адресу help@loginom.ru. В письме подробно опишите проблему, укажите версию и редакцию Loginom, приложите скриншот с настройками REST-запроса.

...