Альтернатива Heroku Scheduler с логами, ретраями и serverless
Heroku Scheduler запускает одноразовые dyno раз в 10 минут, раз в час или раз в день — без контроля над cron-выражениями, истории запусков и ретраев при сбое. Пайплайны Inquir по расписанию используют стандартные cron-выражения, логируют каждое выполнение, ретраят упавшие шаги и делят секреты с HTTP-функциями в том же воркспейсе.
Обновлено: 2026-06-28
Кратко
Суть ответа
Альтернатива Heroku Scheduler с логами, ретраями и serverless. Cron-триггеры пайплайнов Inquir поддерживают стандартные 5-полевые cron-выражения — любой интервал, любое время, с проверкой при сохранении. Каждый запуск создаёт запись выполнения: время старта, длительность, выходы шагов и статус успеха или сбоя.
Когда подходит
- Нужны произвольные cron-выражения шире «каждые 10 минут / раз в час / раз в день»
- Для надёжного продакшена нужны история запусков и ретраи задач
На что обратить внимание
- Каждый запуск Heroku Scheduler — новый эфемерный dyno. Постоянной записи о выполнении нет: чтобы узнать, выполнялись ли задачи и когда, приходится запрашивать log drain. Сопоставить вывод задачи со сбоями можно только поиском по логам, а не в интерфейсе истории задач.
- Минимальный интервал в 10 минут и отсутствие cron-выражений не дают напрямую задать «по будням в 9:00» или «1-го числа каждого месяца в полночь».
Нагрузка и где ломается
Ограничения Heroku Scheduler
- Только 3 фиксированных интервала: каждые 10 минут, раз в час или раз в день — без произвольных cron-выражений
- Задержка старта: на каждый запуск поднимается новый одноразовый dyno — холодный контейнер каждый раз
- Нет истории запусков: ответ на вопрос «задача выполнилась?» — поиск по логам в Papertrail или Logentries
- Нет ретраев: упавшие задачи не перезапускаются автоматически
- Привязка к Heroku: уход с платформы означает отдельную пересборку планировщика
Heroku Scheduler подходит для простых повторяющихся задач, когда хватает фиксированных интервалов. Для продакшен-задач, которым нужны предсказуемое расписание, видимая история запусков и автоматические ретраи при сбое, ему не хватает ключевых примитивов.
Компромиссы платформ
Почему Heroku Scheduler сложно отлаживать в продакшене
Каждый запуск Heroku Scheduler — новый эфемерный dyno. Постоянной записи о выполнении нет: чтобы узнать, выполнялись ли задачи и когда, приходится запрашивать log drain. Сопоставить вывод задачи со сбоями можно только поиском по логам, а не в интерфейсе истории задач.
Минимальный интервал в 10 минут и отсутствие cron-выражений не дают напрямую задать «по будням в 9:00» или «1-го числа каждого месяца в полночь».
Как помогает Inquir
Полные cron-выражения, история запусков и ретраи
Cron-триггеры пайплайнов Inquir поддерживают стандартные 5-полевые cron-выражения — любой интервал, любое время, с проверкой при сохранении. Каждый запуск создаёт запись выполнения: время старта, длительность, выходы шагов и статус успеха или сбоя.
Ретраи настраиваются на каждый шаг пайплайна. Задайте число попыток и задержку — упавшие шаги ретраятся автоматически, без ручного перезапуска. Добавьте алерты по SLO длительности, чтобы узнавать о медленных задачах раньше, чем пользователи заведут тикеты.
Что вы получаете
Inquir и Heroku Scheduler: сравнение
Управление расписанием
Inquir: полные 5-полевые cron-выражения (любой интервал). Heroku Scheduler: только каждые 10 минут, раз в час или раз в день.
История запусков
Inquir: структурированные записи о каждом запуске — доступны без поиска по логам. Heroku Scheduler: только вывод в log drain.
Ретраи
Inquir: настраиваемое число попыток и задержка на шаг. Heroku Scheduler: автоматических ретраев нет.
Холодный старт
Inquir: тёплые контейнеры при стабильном трафике, общий пул контейнеров для остальных. Heroku Scheduler: новый одноразовый dyno на каждый запуск.
Что дальше
Миграция с Heroku Scheduler на Inquir
Перенести скрипт задачи в функцию-обработчик
Перенесите логику скрипта в функцию-обработчик Inquir. Переменные окружения становятся секретами воркспейса.
Создать пайплайн с cron-триггером
Задайте cron-выражение, соответствующее вашему интервалу в Heroku Scheduler. Inquir проверяет выражение при сохранении.
Проверить историю запусков и настроить алерты
После первого запуска откройте историю выполнения. Задайте алерт по SLO длительности для задач, которые должны завершаться в известное окно.
Пример кода
Задача Heroku Scheduler → пайплайн Inquir по расписанию
Heroku запускает rake-задачу или скрипт как одноразовый dyno. Inquir выполняет ту же логику как шаг-функцию в пайплайне по расписанию с историей запусков.
export async function handler(event) { // Fired by a cronTrigger node in a scheduled graph pipeline const cutoff = new Date(Date.now() - 30 * 86_400_000); const deleted = await purgeExpiredSessions(cutoff); return { deleted, cutoff: cutoff.toISOString() }; }
Когда подходит
Переходите с Heroku Scheduler, когда
Когда это уместно
- Нужны произвольные cron-выражения шире «каждые 10 минут / раз в час / раз в день»
- Для надёжного продакшена нужны история запусков и ретраи задач
Когда лучше выбрать другое
- Вы полностью привязаны к платформе Heroku, и интервалов Scheduler достаточно
Частые вопросы
Частые вопросы
Нужно ли уходить с Heroku, чтобы использовать Inquir?
Нет. Функции Inquir могут работать рядом с веб-приложением на Heroku. Замените задачи Heroku Scheduler cron-пайплайнами Inquir, оставив web dyno на Heroku.
Можно ли точно повторить интервалы Heroku Scheduler?
Да — каждые 10 минут это */10 * * * *; раз в час — 0 * * * *; раз в день в полночь UTC — 0 0 * * *. Стандартные cron-выражения покрывают все интервалы Heroku Scheduler и гораздо больше.