Nodul LogoNodul
Обработка ошибок

Перезапуск узла при некорректном ответе (опрос)

API формально ответил успешно (статус 200), но задача ещё в обработке. С помощью настройки Повторить при некорректных данных узел будет перезапускаться через заданное время, пока в ответе есть «триггерные» слова (например, queued, processing). Как только приходит ответ без них — узел завершается и передаёт результат дальше.

Это особенно полезно при генерации контента — видео, аудио, картинок, документов.

Когда использовать

  • Работа с узлами типа «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 (см. Перезапуск узла при ошибке).

RegExp (регулярное выражение) — вы указываете триггерные слова: если они найдены в ответе, узел перезапускается через заданное время. Если триггерных слов нет — это успех, узел завершается и передаёт результат дальше.

Важно: без .* паттерн сработает только если весь ответ целиком равен вашему слову. Всегда пишите .*(ваш_паттерн).*

Примеры паттернов

ЗадачаПаттерн
Перезапуск пока статус queued.*queued.*
Перезапуск пока queued или pending.*(queued|pending).*
Перезапуск пока идёт обработка.*(queued|pending|processing|in_progress).*
Перезапуск пока ready = false.*"ready":\s*false.*

Пример: ожидание генерации видео

Сценарий генерации видео

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

Настройка:

Настройки retry для генерации видео

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

Как это работает:

Итерация 1 показывает статус in_progress

  • Итерация 1: "status": "in_progress" — есть триггерное слово. Узел перезапускается через 30 секунд.

Итерация 2 показывает статус queued

  • Итерация 2: "status": "queued" — есть триггерное слово. Узел перезапускается через 30 секунд.

Итерация 3 показывает статус completed

  • Итерация 3: "status": "completed" — триггерных слов нет. Узел завершается, результат (видео) передаётся в следующий узел.

Узел перезапускается каждые 30 секунд, пока не получит ответ без триггерных слов (queued, in_progress). Как только пришёл успешный ответ — данные передаются в сценарий.

Технические детали

  • Используется движок регулярных выражений Go (RE2)
  • Поддерживаются: \d, \s, \w, |, ()
  • Не поддерживаются: lookahead (?=...) и lookbehind (?<=...)

Что дальше