Обработка ошибок
Во всех узлах-действиях на Nodul в разделе расширенных настроек есть настройка обработки ошибок. Она позволяет автоматически перезапускать узел для повторной попытки отправить запрос, а также перезапускать узел пока API не вернёт нужный результат.

Когда это нужно
1. API вернул ошибку
Сервис, к которому вы обращаетесь, вернул ошибку — 500, 503, таймаут, 429 "Too Many Requests" и т.д.
В обычном поведении это привело бы к остановке сценария. Но с включённым перезапуском система автоматически повторит запрос указанное количество раз с заданной паузой между попытками.
Когда это нужно:
- API иногда отвечает 500 или 503
- Бывают таймауты при высокой нагрузке
- Сервис возвращает 429 при превышении лимита запросов
2. API ещё не готов отдать данные
API формально ответил успешно (статус 200), но задача ещё в обработке. Это особенно важно при генерации контента — видео, аудио, картинок, документов.
Когда использовать:
- Работа с узлами типа "Get Result", где один узел стартует процесс и возвращает ID запуска, а второй получает результат спустя время
- Применимо почти для всех ИИ-сервисов (кроме текстовых)
Типичный пример — API генерации видео:
// Первый запрос — задача в очереди
{"status": "queued", "id": "abc123"}
// Через 5 секунд — обрабатывается
{"status": "processing", "id": "abc123"}
// Через 10 секунд — готово!
{"status": "completed", "url": "https://..."}Вам нужно дождаться completed с готовой ссылкой на файл. Вы указываете триггерные слова (queued, processing) — пока они есть в ответе, узел перезапускается через заданное время. Как только пришёл completed (без триггерных слов) — узел завершается успешно, результат (файл) передаётся в сценарий для дальнейшей работы.
Включите: Повторить при некорректных данных
Для генерации контента (видео, аудио, картинки): 5-10 попыток, задержка 20-30 сек. Для обычных API-ошибок: 2-3 попытки, задержка 3-5 сек.
Настройка обработки ошибок

Повторить при ошибке узла — Включить автоматический повтор при ошибке узла.
Повторить при некорректных данных — Включить автоматический повтор при несоответствии ответа ожидаемому паттерну.
Количество попыток — Сколько раз повторить запрос (по умолчанию: 2)
Задержка между попытками (сек) — Пауза между попытками в секундах (по умолчанию: 3)
RegExp (регулярное выражение) — Функционал перезапуска настраивается через регулярные выражения. Используется для фильтрации ошибок и проверки ответа API.
RegExp (регулярные выражения)
Вы указываете триггерные слова — если они найдены в ответе, узел перезапускается через заданное время. Если триггерных слов нет — это успех, узел завершается и передаёт результат дальше в сценарий.
Важно: Без .* паттерн будет работать только если весь ответ целиком равен вашему слову. Всегда пишите .*(ваш_паттерн).*
Примеры паттернов:
| Задача | Паттерн |
|---|---|
Перезапуск пока статус queued | .*queued.* |
Перезапуск пока queued или pending | .*(queued|pending).* |
| Перезапуск пока идёт обработка | .*(queued|pending|processing|in_progress).* |
Перезапуск пока ready = false | .*"ready":\s*false.* |
Пример: Ожидание генерации видео

Задача: API генерации видео сначала возвращает in_progress, потом queued, и только потом completed с готовой ссылкой.
Настройка:

- Включите
Повторить при некорректных данных - RegExp (регулярное выражение):
.*(in_progress|queued).* - Количество попыток: 5
- Задержка между попытками (сек): 30
Как это работает:

- Iteration 1:
"status": "in_progress"— Содержит триггерное слово. Узел перезапускается через 30 секунд.

- Iteration 2:
"status": "queued"— Содержит триггерное слово. Узел перезапускается через 30 секунд.

- Iteration 3:
"status": "completed"— Триггерных слов нет! Это успех. Узел завершается, результат (видео) передаётся в следующий узел сценария.
Суть: Узел перезапускается каждые 30 секунд до момента, пока не получит ответ без триггерных слов (queued, in_progress). Пока триггерные слова есть — данные НЕ передаются дальше, узел перезапускается снова. Как только пришёл успешный ответ (completed) — файл/данные передаются в сценарий для дальнейшей работы.
Технические детали
- Используется движок регулярных выражений Go (RE2)
- Поддерживаются:
\d(цифры),\s(пробелы),\w(буквы),|(или),()(группы) - Не поддерживаются: lookahead
(?=...)и lookbehind(?<=...)