Skip to main content
Автоматизация — это части приложения, которые работают самостоятельно — по расписанию или когда внешний сервис отправляет событие. Вы объявляете их в компоненте process в kazzle.config.ts. Один компонент может содержать столько триггеров, сколько вам нужно.

Структура

Здесь происходит два процесса:
  • processMode определяет жизненный цикл — долгоживущий сервер или одноразовый запуск на триггер.
  • triggers[] перечисляет события, которые должны запустить этот компонент.
Эти два элемента независимы. Постоянный сервер может иметь крон. Эфемерный процесс может иметь вебхук. Выберите жизненный цикл, подходящий для вашей задачи, а затем добавьте столько триггеров, сколько вам нужно.

processMode

Триггеры

Каждый триггер имеет name (уникальное в пределах компонента), kind и — в зависимости от режима — schedule и/или path.

Режим persistent — HTTP в сервер

Когда триггер срабатывает для постоянного компонента, Kazzle отправляет POST на ваш сервер по объявленному path. Запрос содержит: Для вебхук-триггеров исходное тело запроса пересылается как тело POST. Для триггеров расписания тело пусто.

Режим triggered — одноразово на триггер

Когда триггер срабатывает для компонента triggered, Kazzle запускает скрипт входа заново и ждет его завершения. Нет path; скрипт узнает, какой триггер сработал, из переменных окружения.
Компоненты triggered не имеют простаивающих машин в production — они запускаются при каждом вызове и завершаются при выходе.

URL вебхуков

Сегмент triggerName должен совпадать с записью kind: 'webhook' в triggers[] этого компонента. Неизвестные имена триггеров возвращают 404.

Разрешение расписания

Крон-выражения состоят из 5 полей (минута, час, день месяца, месяц, день недели) и минутное разрешение — минимум. Расписания с разрешением менее минуты отклоняются при валидации манифеста.

Как записываются запуски

Каждый запуск триггера записывает строку process_runs с trigger_name, triggered_by, run_id и статусом выхода запуска. Вы можете запросить их из своего кода или просмотреть в представлении запусков приложения.

Исчерпание кредитов

Неудачный запуск записывается и логируется, но расписание продолжает работать по обычному графику — нестабильный запуск никогда не отключает триггер. Единственное, что останавливает запуск — это кредиты: каждый запуск триггера проверяется на баланс пространства, и пока пространство не имеет кредитов (или не имеет настроенной биллинга), запуски пропускаются с кодом 402. Это самовосстанавливающееся состояние — расписание остается активным и следующий запуск после пополнения баланса выполняется нормально, без ручного возобновления.

Добавление автоматизации позже

Простое приложение может начать без триггеров и получить их позже — добавьте ежедневное резюме, подключите Stripe, запустите очистку. Жизненный цикл компонента (processMode) и триггеры (triggers[]) независимы, поэтому вы можете изменять их без переписывания остальной части приложения.