Inquir Compute
Сценарий

Cron-задачи как пайплайны по расписанию, а не «магический» shell

Cron на триггере пайплайна — те же функции, что и у HTTP, одна история запусков.

Где гниёт crontab

Почта root отключена — задачи падают молча. Скрипты живут на одной машине, не в git, никто не знает версию «прошлой ночью».

Пересекающиеся задачи наступают на файлы; новички узнают расписание только у «старожила».

Параллельные запуски без ограничений портят общее состояние: без явных правил «не наступать друг на друга» легко получить порчу данных.

Overlapping runs corrupt shared state without skip-if-running guards—scheduled pipelines need the same rigor as webhook processors.

Почему одних таймеров мало

Системные таймеры не чинят изоляцию зависимостей.

Хочется единой модели секретов и логов между фоновой задачей и API.

Одна платформа

Один ID функции может питать HTTP-маршрут и шаг пайплайна по расписанию — без дублирования деревьев кода.

Cron проверяется при сохранении; планировщик помнит следующий запуск пайплайна — правки расписания переносятся аккуратно.

Примитивы

Проверка cron при сохранении

Некорректное выражение отклоняется при сохранении, а не «внезапно» в проде.

Шаг планировщика и перекрытия

Нагрузка минутного масштаба; для длинных задач — пропуск при уже идущем запуске и явные правила перекрытия.

История запусков

Видно, отработала ли задача, без поиска по логам на сервере.

Оповещения

Подключите мониторинг к доле ошибок или к SLA по длительности выполнения.

Как перенести cron на пайплайны Inquir с расписанием

Оформите хендлер, проверьте вызовы, затем триггер schedule с валидным cron.

1

Кодифицировать

Перенесите логику из shell в типизированный хендлер.

2

Тест

Ручные вызовы до совпадения выходов с ожиданием.

3

Расписание

Триггер типа schedule и валидная cron-строка в API/UI.

Каркас задачи

По расписанию хендлер получает метаданные пайплайна в событии. Возвращайте JSON для логов и следующих шагов.

jobs/report.mjs
export async function handler(event) {
  const rows = await buildReport();
  await upload(rows);
  return { rows: rows.length };
}

Выбирайте, когда…

Когда это уместно

  • Ночной ETL
  • Ротация сертификатов/токенов
  • Периодический опрос интеграций

Когда лучше не трогать

  • Субсекундные периодические задачи — сверяйтесь с таймерами платформы

Вопросы и ответы

Запуск длиннее интервала?

Идемпотентность, локи или skip-if-running внутри хендлера, чтобы перекрытия не портили состояние.

Чем лучше crontab на одной машине?

Версионируемые бандлы, изоляция контейнера, записи вызовов и те же секреты, что у HTTP — плюс графы шагов.

Часовой пояс cron?

Зафиксируйте ожидание команды (часто UTC); учитывайте DST для бизнес-часов.

Inquir Compute

Самый простой способ запускать AI-агентов и backend-джобы без инфраструктуры.

Связаться info@inquir.org

© 2025 Inquir Compute. Все права защищены.