При проектировании воркфлоу важно предусмотреть возможные ошибки и настроить их корректную обработку. В Нейро42 можно создать отдельный воркфлоу для обработки ошибок, чтобы управлять действиями при сбоях выполнения, например, отправлять уведомления в почту или мессенджеры.
Анализ ошибок
Чтобы понять, почему воркфлоу завершился с ошибкой, можно:
- Просмотреть Историю запусков (Executions) для конкретного воркфлоу или для всех воркфлоу, к которым у вас есть доступ.
- Загрузить данные предыдущих запусков в текущий воркфлоу для диагностики.
- Включить логирование в реальном времени (Log Streaming) для отслеживания событий по мере их выполнения.
Создание воркфлоу для ошибок
- Создайте новый воркфлоу, поставив узел Error Trigger в качестве первого узла.
- Дайте воркфлоу понятное имя, например Error Handler.
- Сохраните воркфлоу.
Настройка воркфлоу для обработки ошибок:
- Откройте воркфлоу, для которого хотите настроить обработку ошибок.
- Перейдите в Опции > Настройки .
- В поле Error Workflow выберите созданный воркфлоу для ошибок (например, Error Handler).
- Сохраните изменения.
Теперь при возникновении ошибки в этом воркфлоу автоматически будет запускаться связанный воркфлоу для обработки ошибок.
Один воркфлоу для ошибок можно использовать для нескольких воркфлоу одновременно.
Данные об ошибках
По умолчанию узел Error Trigger получает следующую информацию о сбое:
[
{
«execution»: {
«id»: «231»,
«url»: «https://neuro42.example.com/execution/231»,
«retryOf»: «34»,
«error»: {
«message»: «Example Error Message»,
«stack»: «Stacktrace»
},
«lastNodeExecuted»: «Node With Error»,
«mode»: «manual»
},
«воркфлоу»: {
«id»: «1»,
«name»: «Example Воркфлоу»
}
}
]
Особенности данных:
- execution.id и execution.url доступны только если выполнение сохранено в базе данных. Для ошибок в триггере основного воркфлоу этих данных нет.
- execution.retryOf присутствует только для повторного выполнения неудачного запуска.
Если ошибка возникла в триггере основного воркфлоу, структура данных отличается: больше информации хранится в триггере{}, меньше в выполнении{}.
Пример для ошибки в триггере:
{
«trigger»: {
«error»: {
«context»: {},
«name»: «ВоркфлоуActivationError»,
«cause»: {
«message»: «»,
«stack»: «»
},
«timestamp»: 1654609328787,
«message»: «»,
«node»: { … }
},
«mode»: «trigger»
},
«воркфлоу»: {
«id»: «»,
«name»: «»
}
}
Принудительная генерация ошибки
Чтобы искусственно вызвать сбой выполнения воркфлоу и протестировать обработку ошибок:
- Добавьте узел Stop And Error в нужное место воркфлоу.
- Настройте условия, при которых выполнение будет остановлено с ошибкой.
- При срабатывании узла будет активирован воркфлоу для обработки ошибок.
Обычно ошибки возникают из-за некорректных настроек узлов или нехватки ресурсов. Узел Stop And Error позволяет имитировать такие ситуации для тестирования.