Inquir Compute · пайплайны

Перенесите cron-задачи с VPS в пайплайны по расписанию

Перенесите cron-задачи с сырого crontab на VPS на serverless-пайплайны по расписанию: история запусков, ретраи, изолированные контейнеры и та же модель секретов и логов, что у HTTP-функций.

Обновлено: 2026-06-28

Суть ответа

Перенесите cron-задачи с VPS в пайплайны по расписанию. Это не «ещё один UI над планировщиком»: каждый запуск — управляемая serverless-функция в изолированном контейнере по cron-правилам пайплайна, с теми же маршрутизацией, секретами и наблюдаемостью, что у синхронных HTTP-обработчиков.

Когда подходит

  • Выросли из голого crontab на VPS и хотите serverless cron с версионируемыми деплоями, изоляцией и историей рядом с HTTP-функциями.
  • Нужен паритет «работа по API» и «работа по расписанию» в одном продукте.

На что обратить внимание

  • Таймеры помогают с надёжностью запуска, но упаковка, формат логов и раздача секретов остаются на вас.
  • CronJob в Kubernetes силён, но тяжёл, если остальной стек живёт не в кластере.

Проблемы cron-задач на VPS

  • Голый crontab: мало структурированной истории запусков, логи собираются по SSH, одна общая среда для всех задач.
  • systemd timers: надёжнее старт, но упаковка, формат логов и раздача секретов остаются на вас.
  • Пайплайны Inquir по расписанию: serverless cron с изолированными запусками, ретраями, историей выполнения и общими примитивами с HTTP-обработчиками.

Cron-задачи на VPS живут нормально, пока кто-то помнит, какой интерпретатор крутился в прошлый вторник и почему вывод пропал после ротации syslog. Перенос повторяющейся работы с машины в serverless-модель для расписаний даёт версионируемые деплои и аудит в самом продукте вместо grep по сессиям.

Записи crontab к тому же живут вне контроля версий: расписание, версия скрипта и окружение тихо расходятся, пока никто уже не может воспроизвести то, что реально работает в проде.

Когда все задачи делят одного пользователя ОС и один Python, безобидный отчёт может сломать зависимости финансового экспорта.

Почему ломаются crontab и systemd timers

Таймеры помогают с надёжностью запуска, но упаковка, формат логов и раздача секретов остаются на вас.

CronJob в Kubernetes силён, но тяжёл, если остальной стек живёт не в кластере.

Как пайплайны по расписанию заменяют cron-задачи на VPS

Это не «ещё один UI над планировщиком»: каждый запуск — управляемая serverless-функция в изолированном контейнере по cron-правилам пайплайна, с теми же маршрутизацией, секретами и наблюдаемостью, что у синхронных HTTP-обработчиков.

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

Планировщик опрашивает каждые 30 секунд и требует минимум 1 минуту между запусками — закладывайте задачи раз в минуту и реже; срабатывание может отстать от расписания на ~30 с, в отличие от таймера на уровне ядра.

Плюсы управляемых cron-пайплайнов

Изолированные запуски по задаче

Каждая задача выполняется в своём контейнере, поэтому конфликты зависимостей и эффекты на файловой системе не выходят за её пределы.

Те же секреты и логи, что у HTTP

Задачи по расписанию используют ту же модель секретов и логов, что и HTTP-обработчики, — без параллельного самодельного стека на VPS.

Шаги после триггера расписания

Подключите cron-триггер пайплайна к шагам обработки, параллельным веткам или более долгим асинхронным процессам.

Как перенести cron-задачи с VPS в Inquir

Каждую бывшую строку crontab оформите как serverless-обработчик и триггер расписания — запуски уходят из shell на VPS в историю выполнения рядом с остальной платформой.

1

Реализовать обработчик

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

2

Добавить расписание пайплайна

В визуальном редакторе пайплайнов соедините узел cronTrigger с узлом-функцией, затем задайте и сохраните cron-выражение.

3

Наблюдать

Проверяйте длительности и долю сбоев, пока они не превратились в тихие дыры в данных.

Crontab → Inquir: пример миграции

Замените строку crontab на версионируемый serverless-обработчик. Функция получает событие пайплайна с метаданными триггера; переменные окружения несут те же секреты, что у HTTP-функций.

crontab (до)
# VPS crontab — runs as a system user, logs to /var/log, shares one Python env
0 2 * * * node /opt/app/scripts/sync-customers.js >> /var/log/sync.log 2>&1
jobs/sync-customers.mjs (после)
export async function handler(event) {
  // event.pipeline, event.step, event.trigger provided by the scheduler
  const since =
    process.env.LAST_SYNC_CURSOR ?? new Date(Date.now() - 86_400_000).toISOString();
  const batch = await fetchCustomers({ updatedSince: since });
  for (const customer of batch) {
    await syncToDestination(customer);
  }
  return { synced: batch.length };
}

Когда переносить cron с VPS

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

  • Выросли из голого crontab на VPS и хотите serverless cron с версионируемыми деплоями, изоляцией и историей рядом с HTTP-функциями.
  • Нужен паритет «работа по API» и «работа по расписанию» в одном продукте.

Когда лучше выбрать другое

  • Нужен планировщик с точностью долей секунды по всему миру (edge-архитектуры устроены иначе).

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

Это то же самое, что Linux crontab?

Нет — это расписание на уровне приложения через пайплайны Inquir. Платформа решает, когда запустить функцию в контейнере; вы задаёте cron-выражения и смотрите запуски в интерфейсе продукта.

Как разбирать сбой запуска?

Откройте историю вызовов функции, стоящей за шагом пайплайна: там видны payload, логи и тайминги реального запуска — куда проще, чем сверять таймстемпы syslog по SSH.

Могут ли задачи вызывать HTTP-маршруты той же платформы?

Да. Задачи могут вызывать эндпоинты шлюза или другие внутренние функции, если так границы остаются чище.