Платформа 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 ночи обнаруживается утром из жалоб пользователей.
Управлять секретами, переменными окружения и версиями кода в трёх местах — двойная нагрузка на дежурство.
Как Inquir помогает в этом сценарии
Единая платформа для расписаний и 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.
| Capability | crontab | systemd timer | Heroku Scheduler | Inquir |
|---|---|---|---|---|
| Expression validation | At runtime | At unit install | Fixed intervals only | At save time |
| Run history | Syslog / mail spool | journalctl (host only) | None | Console—30-day retention |
| Retries on failure | None | OnFailure= unit option | None | Per-step policy |
| Shared secrets with API | Separate .env files | Separate service files | Separate config vars | Same workspace secrets |
| Minimum interval | 1 minute | 1 second (OnCalendar) | 10 minutes | 1 minute |
| Infrastructure you operate | VPS + cron daemon | VPS + systemd | Heroku dyno | None |
Что вы получаете на платформе
Что входит в cron job platform
Полные cron-выражения
0 9 * * 1-5, */15 * * * *, 0 0 1 * * — любой стандартный cron с валидацией при вводе; минимальный интервал — 5 минут.
История прогонов
Каждый запуск рядом с 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 }; }
Когда подходит и когда нет
Когда платформа cron-задач уместна
Когда это уместно
- Нужны API и cron в одном рабочем пространстве с общими секретами
- Важны история прогонов и алерты без внешнего мониторинга
Когда лучше выбрать другое
- Один простой cron без требований к истории — хватит и crontab
Вопросы и ответы
Вопросы и ответы
Сколько cron-задач можно создать?
Зависит от тарифа рабочего пространства; детали — в документации.
Можно запустить задачу вручную?
Да — через UI или HTTP-вызов пайплайна; история включает ручные прогоны.