Inquir Compute logoInquir Compute
Паттерн · Inquir Compute

Serverless scheduled jobs: полные cron-выражения с историей и повторами

Пайплайны с cron-триггером: выражение проверяется при сохранении, каждый прогон — запись в консоли рядом с HTTP-вызовами, повторы настраиваются без внешнего планировщика.

Last updated: 2026-04-20

Direct answer

Serverless scheduled jobs: полные cron-выражения с историей и повторами. Полные cron-выражения: `0 9 * * 1-5` работает. Выражение валидируется при сохранении — опечатка выявляется сразу.

When it fits

  • Нужны полные cron-выражения
  • Важна история прогонов и алерты на ошибки

Tradeoffs

  • Cloudwatch Events и IFTTT не дают полной истории и контроля над повторами.
  • Без проверки cron-выражения при вводе опечатка запускает задачу не тогда, когда ожидалось — и обнаруживается только в продакшне.

Проблемы с расписаниями вне managed-платформ

  • VPS crontab: output routed to root mail nobody reads; no retry on failure
  • systemd timers: better reliability, but logs scattered, secrets manual, no history
  • Kubernetes CronJob: correct primitives but cluster overhead for small teams

Crontab на VPS теряет историю; ошибка — тихий сбой в 3 ночи. Kubernetes CronJob — сложная настройка ради простой задачи.

Когда простые планировщики не подходят

Cloudwatch Events и IFTTT не дают полной истории и контроля над повторами.

Без проверки cron-выражения при вводе опечатка запускает задачу не тогда, когда ожидалось — и обнаруживается только в продакшне.

Что даёт Inquir для scheduled jobs

Полные cron-выражения: `0 9 * * 1-5` работает. Выражение валидируется при сохранении — опечатка выявляется сразу.

История каждого прогона в консоли рядом с HTTP-вызовами. Повторы, таймауты и логи — единые для всех триггеров.

Что входит в managed scheduled jobs

Валидация cron

Синтаксис cron-выражения проверяется при сохранении: следующий запуск показывается до применения.

История прогонов

Каждый запуск — запись с временем, статусом и логами.

Повторы

Политика повторов на уровне пайплайна — для задач, которые иногда падают из-за временных ошибок.

Секреты

Те же переменные окружения, что у HTTP-функций — меняются без редеплоя.

Как настроить расписание

1

Написать функцию-обработчик

Обработчик события scheduled: логика, которую нужно запускать по расписанию.

2

Создать пайплайн с cron-триггером

В настройках пайплайна выбрать schedule, ввести cron-выражение — сохранить.

3

Проверить в консоли

После первого срабатывания — история с логами и статусом прогона.

Nightly sync job with watermark

Scheduled handler reads cursor from environment, fetches incremental updates, upserts idempotently, and returns new cursor for the next run.

jobs/nightly-sync.mjs
export async function handler(event) {
  // event.trigger?.type === 'schedule' when fired by a cronTrigger node
  const since = process.env.SYNC_CURSOR ?? new Date(Date.now() - 86_400_000).toISOString();
  const records = await source.fetchUpdatedSince(since);
  if (records.length === 0) return { synced: 0, cursor: since };
  await destination.upsertBatch(records); // idempotent by record ID
  const newCursor = records.at(-1)?.updatedAt ?? since;
  // Store cursor for next run (update env var or external store)
  return { synced: records.length, cursor: newCursor };
}

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

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

  • Нужны полные cron-выражения
  • Важна история прогонов и алерты на ошибки

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

  • Простая раз-в-час задача без требований к истории — crontab достаточен

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

Поддерживается секундный cron?

Минимальный интервал — 1 минута, что соответствует стандартному unix cron.

Можно ли запустить вручную?

Да — через UI консоли или HTTP-вызов того же пайплайна без cron-триггера.

Inquir Compute logoInquir Compute

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

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

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