Перейти к содержанию
Innovialabs

Обработка ошибок в Make: Retry, Break, Rollback и Ignore

Продвинутое3 мин

Коротко

В Make к модулю добавляют маршрут-обработчик ошибок и завершают его директивой; для нестабильных API используйте Break с автоповтором и хранением незавершённых выполнений, а перед директивой ставьте оповещение.

Как Make обрабатывает ошибки

Когда модуль падает, а обработчика нет, сценарий останавливается с ошибкой. Если такое повторяется несколько запусков подряд, Make может отключить сценарий, и данные перестанут обрабатываться, пока кто-то не заметит.

Чтобы управлять поведением, к модулю добавляют маршрут-обработчик ошибок: правый клик по модулю → Add error handler. Маршрут срабатывает только при ошибке этого модуля и заканчивается директивой — инструкцией, что делать дальше.

Пять директив и когда их выбирать

ДирективаЧто происходитСтатус запускаКогда использовать
Ignoreтекущий бандл отбрасывается, остальные обрабатываютсяуспехошибка не важна: например, нет необязательного поля
Resumeмодуль «подменяется» заданным вами результатом, поток идёт дальшеуспехесть разумное значение по умолчанию
Breakбандл сохраняется как незавершённое выполнение, можно включить автоповторпредупреждениевременные сбои: таймауты, лимиты API
Rollbackсценарий останавливается, транзакционные модули откатываютсяошибкаданные должны записаться целиком или никак
Commitсценарий останавливается, уже сделанное фиксируетсяуспехнужно остановиться, но сохранить результат

Важно: Rollback и Commit работают только для модулей с поддержкой транзакций (например, хранилища данных Make и некоторые базы данных). Отправленное письмо или созданную в CRM сделку Rollback не отменит.

Retry: как повторять запросы к нестабильному API

Отдельной директивы Retry нет — повторы делаются через Break:

  1. В настройках сценария включите Allow storing of incomplete executions.
  2. Добавьте к модулю обработчик и поставьте директиву Break.
  3. Включите Automatically complete execution, задайте число попыток и интервал между ними.

Make сохранит упавший бандл и сам запустит его позже с того модуля, где произошла ошибка. Остальные бандлы при этом продолжают обрабатываться.

Для части временных ошибок (проблемы соединения, превышение лимита запросов) Make может повторять незавершённые выполнения и без явного Break, если хранение включено. Но лучше задавать поведение явно — так понятнее, что произойдёт.

Практические правила для повторов:

  • Интервал больше окна лимита. Если API ограничивает запросы в минуту, повтор через секунды не поможет.
  • Идемпотентность. Повтор может создать дубль. Перед созданием записи ищите её по уникальному ключу (email, номер заказа) или используйте upsert.
  • Ограниченное число попыток. Бесконечные повторы ошибки валидации ничего не исправят.

Незавершённые выполнения

Вкладка Incomplete executions у сценария — это очередь бандлов, которые не дошли до конца. Каждое можно открыть, исправить данные или маппинг и запустить заново, либо удалить.

Это главная защита от тихой потери данных: заявка не исчезает, а ждёт решения. Но очередь нужно просматривать — иначе она просто копится.

Ошибки должны быть громкими

Обработчик без уведомления — тот же тихий сбой. Схема, которая работает:

  1. Маршрут обработчика: модуль Telegram, Slack или email с текстом ошибки, названием сценария и ключевыми полями бандла (ID заказа, клиент).
  2. Затем директива: Break для временных ошибок, Rollback для критичных.
  3. На маршрут можно поставить фильтр по типу или тексту ошибки, чтобы разделить, например, ошибки данных и проблемы соединения.

Дополнительно:

  • включите уведомления Make об ошибках и отключении сценариев в настройках профиля;
  • задайте разумный лимит последовательных ошибок в настройках сценария;
  • для данных о клиентах включите опцию конфиденциальности, чтобы содержимое бандлов не хранилось в логах.

Частые ошибки

  • Ignore везде «чтобы не падало». Сценарий зелёный, а заказы теряются.
  • Rollback для внешних API, которые откатить нельзя.
  • Break без включённого хранения незавершённых выполнений.
  • Нет алерта: о проблеме узнают от клиента.

Частые вопросы

Ignore выбрасывает упавший бандл, и дальше он не идёт. Resume подставляет заданный вами результат вместо ответа модуля, и бандл продолжает путь по сценарию.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.