Платформа · Inquir Compute

Платформа cron-задач: история, оповещения и API рядом с расписаниями

Один шлюз для HTTP-API, cron-задач и вебхуков. Полные cron-выражения, история каждого прогона, ретраи и секреты в одном рабочем пространстве — без crontab, K8s CronJob и отдельного scheduler-сервиса.

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

Суть ответа

Платформа cron-задач: история, оповещения и API рядом с расписаниями. API, cron и вебхуки — в одном рабочем пространстве с общими секретами, рантаймом и историей вызовов. Деплой обновляет всё сразу.

Когда подходит и когда нет

  • Нужны API и cron в одном рабочем пространстве с общими секретами
  • Важны история прогонов и алерты без внешнего мониторинга

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

  • Без истории прогонов тихий сбой в 3 ночи обнаруживается утром из жалоб пользователей.
  • Управлять секретами, переменными окружения и версиями кода в трёх местах — двойная нагрузка на дежурство.

Что нужно настоящей платформе cron-задач

  • Проверка cron-выражения до первого пропущенного запуска
  • История выполнения: когда запускался, как долго, какой результат
  • Ретраи: автоматический перезапуск при сбое без ручного вмешательства
  • Общие секреты с HTTP-маршрутами (без параллельного env-файла на сервере)
  • Алерты: уведомление при сбое или превышении ожидаемой длительности

Большинство команд начинают с crontab на VPS. Пока не вырастут масштаб или команда — и вопрос «запускалась ли задача прошлой ночью?» требует SSH и grep по логам.

Почему изолированные планировщики сложны

Без истории прогонов тихий сбой в 3 ночи обнаруживается утром из жалоб пользователей.

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

Единая платформа для расписаний и API

API, cron и вебхуки — в одном рабочем пространстве с общими секретами, рантаймом и историей вызовов. Деплой обновляет всё сразу.

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

Cron platform comparison: what you get and what you operate

A reference checklist for evaluating cron platforms—not a feature marketing table.

Cron platform comparison: what you get and what you operate
Capabilitycrontabsystemd timerHeroku SchedulerInquir
Expression validationAt runtimeAt unit installFixed intervals onlyAt save time
Run historySyslog / mail spooljournalctl (host only)NoneConsole—30-day retention
Retries on failureNoneOnFailure= unit optionNonePer-step policy
Shared secrets with APISeparate .env filesSeparate service filesSeparate config varsSame workspace secrets
Minimum interval1 minute1 second (OnCalendar)10 minutes1 minute
Infrastructure you operateVPS + cron daemonVPS + systemdHeroku dynoNone

Что входит в cron job platform

Полные cron-выражения

0 9 * * 1-5, */15 * * * *, 0 0 1 * * — любой стандартный cron с валидацией при вводе; минимальный интервал — 5 минут.

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

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

Ретраи

Настраиваемая политика: сколько попыток и с какой задержкой повторять при временных ошибках.

Параллельные задачи

Несколько задач с разными расписаниями и рантаймами в одном рабочем пространстве.

Как организовать cron на Inquir

1

Написать функцию

Обработчик события со всей логикой задачи. Рантайм: Node.js, Python или Go.

2

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

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

3

Настроить алерты

Задача упала — уведомление. История хранится в консоли, не нужен отдельный мониторинг.

Certificate expiry checker (cron job)

Runs daily at 08:00 UTC, checks TLS certificate expiry for a list of domains, and sends alert if any expire within 30 days.

jobs/cert-checker.mjs
import tls from 'node:tls';
import net from 'node:net';

async function checkExpiry(hostname) {
  return new Promise((resolve, reject) => {
    const socket = tls.connect({ host: hostname, port: 443 }, () => {
      const cert = socket.getPeerCertificate();
      socket.destroy();
      resolve(new Date(cert.valid_to));
    });
    socket.on('error', reject);
  });
}

export async function handler(event) {
  const domains = process.env.DOMAINS_TO_MONITOR?.split(',') ?? [];
  const results = await Promise.all(
    domains.map(async (d) => ({ domain: d, expiry: await checkExpiry(d) })),
  );
  const expiringSoon = results.filter(
    (r) => r.expiry.getTime() - Date.now() < 30 * 86_400_000,
  );
  if (expiringSoon.length > 0) await sendAlert(expiringSoon);
  return { checked: domains.length, expiringSoon: expiringSoon.length };
}

Когда платформа cron-задач уместна

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

  • Нужны API и cron в одном рабочем пространстве с общими секретами
  • Важны история прогонов и алерты без внешнего мониторинга

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

  • Один простой cron без требований к истории — хватит и crontab

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

Сколько cron-задач можно создать?

Зависит от тарифа рабочего пространства; детали — в документации.

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

Да — через UI или HTTP-вызов пайплайна; история включает ручные прогоны.