Cron job platform: история, алерты и API рядом с расписаниями
Один шлюз для HTTP-API, cron-задач и вебхуков. Полные cron-выражения, история каждого прогона, повторы и секреты в одном рабочем пространстве — без crontab, K8s CronJob и отдельного scheduler-сервиса.
Last updated: 2026-04-20
Answer first
Direct answer
Cron job platform: история, алерты и API рядом с расписаниями. API, cron и вебхуки — в одном рабочем пространстве с общими секретами, рантаймом и историей вызовов. Деплой обновляет всё сразу.
When it fits
- Нужны API и cron в одном рабочем пространстве
- Важна история и алерты без внешнего мониторинга
Tradeoffs
- Без истории прогонов тихий сбой в 3 ночи обнаруживается утром из жалоб пользователей.
- Управлять секретами, переменными окружения и версиями кода в трёх местах — двойная нагрузка на дежурство.
Нагрузка и где ломается
Зоопарк планировщиков
- Expression validation before the first missed run
- Execution history: when did it run, how long, what output
- Retries: automatic re-run on failure without manual intervention
- Shared secrets with HTTP API routes (no parallel env file on a server)
- Alerts: notify when a job fails or takes longer than expected
Crontab на VPS, Kubernetes CronJob, Heroku Scheduler, EventBridge Rules — каждый проект накапливает по несколько планировщиков в разных местах без единой истории.
Компромиссы
Почему изолированные планировщики сложны
Без истории прогонов тихий сбой в 3 ночи обнаруживается утром из жалоб пользователей.
Управлять секретами, переменными окружения и версиями кода в трёх местах — двойная нагрузка на дежурство.
Как помогает Inquir
Единая платформа для расписаний и API
API, cron и вебхуки — в одном рабочем пространстве с общими секретами, рантаймом и историей вызовов. Деплой обновляет всё сразу.
Полные cron-выражения, история каждого прогона, алерты на ошибки — не нужен отдельный мониторинг.
Что получаете
Что входит в cron job platform
Полные cron-выражения
`0 9 * * 1-5`, `*/15 * * * *`, `0 0 1 * *` — любой стандартный cron с валидацией при вводе.
История прогонов
Каждый запуск рядом с HTTP-вызовами в консоли: время, длительность, статус, логи.
Повторы
Настраиваемая политика: сколько попыток и с какой выдержкой при временных ошибках.
Параллельные задачи
Несколько задач с разными расписаниями и рантаймами в одном рабочем пространстве.
Что делать дальше
Как организовать cron на Inquir
Написать функцию
Обработчик события со всей логикой задачи. Рантайм: Node.js, Python или Go.
Добавить расписание
Пайплайн с cron-триггером: ввести выражение, сохранить — следующий запуск подтверждается сразу.
Настроить алерты
Задача упала — уведомление. История хранится в консоли, не нужен отдельный мониторинг.
Пример кода
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.
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 }; }
Когда подходит
Когда использовать
Когда это уместно
- Нужны API и cron в одном рабочем пространстве
- Важна история и алерты без внешнего мониторинга
Когда лучше не трогать
- Один простой cron без требований к истории — crontab достаточен
FAQ
Вопросы и ответы
Сколько cron-задач можно создать?
Зависит от тарифа рабочего пространства; деталей в публичной документации.
Можно запустить задачу вручную?
Да — через UI или HTTP-вызов пайплайна; история включает ручные прогоны.