Альтернатива 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 drains. Чтобы понять, когда и как упала задача, нужен поиск по логам, а не UI истории задач.
- Минимальный интервал 10 минут и отсутствие cron-выражений не дают расписать «по будням в 9:00» или «1-го числа в полночь» напрямую.
Ситуация: нагрузка и где обычно ломается
Ограничения Heroku Scheduler
- Только 3 фиксированных интервала: каждые 10 минут, раз в час или раз в день — без произвольных cron-выражений
- Задержка старта: на каждый запуск поднимается новый одноразовый dyno — холодный контейнер каждый раз
- Нет истории прогонов: «задача выполнилась?» — только поиск по логам в Papertrail или Logentries
- Нет ретраев: упавшие задачи не перезапускаются автоматически
- Привязка к Heroku: уход с платформы — отдельная пересборка планировщика
Heroku Scheduler подходит для простых повторяющихся задач, когда хватает фиксированных интервалов. Для продакшен-задач с предсказуемым расписанием, видимой историей и автоматическими ретраями базовых примитивов уже не хватает.
Компромиссы платформ
Почему Heroku Scheduler сложно отлаживать в проде
Каждый запуск Heroku Scheduler — новый эфемерный dyno. Нет постоянной записи о выполнении — только log drains. Чтобы понять, когда и как упала задача, нужен поиск по логам, а не UI истории задач.
Минимальный интервал 10 минут и отсутствие cron-выражений не дают расписать «по будням в 9:00» или «1-го числа в полночь» напрямую.
Как Inquir помогает в этом сценарии
Полные cron-выражения, история и ретраи
Cron-триггеры пайплайнов Inquir поддерживают стандартные 5-полевые cron-выражения — любой интервал, любое время, с проверкой при сохранении. Каждый прогон создаёт запись: время старта, длительность, выходы шагов, успех или сбой.
Ретраи настраиваются на уровне шага пайплайна — число попыток и задержка. Упавшие шаги перезапускаются без ручного триггера. Алерты по SLO длительности помогают заметить медленные задачи до тикетов от пользователей.
Что вы получаете на платформе
Inquir vs Heroku Scheduler
Управление расписанием
Inquir: полные 5-полевые cron-выражения (любой интервал). Heroku Scheduler: только каждые 10 мин, раз в час или раз в день.
История прогонов
Inquir: структурированные записи о каждом запуске — без поиска по логам. Heroku Scheduler: только вывод в log drain.
Ретраи
Inquir: настраиваемое число попыток и задержка на шаг. Heroku Scheduler: автоматических ретраев нет.
Холодный старт
Inquir: тёплые контейнеры при стабильном трафике, общий пул для остальных. Heroku Scheduler: новый одноразовый dyno на каждый запуск.
Что сделать дальше, по шагам
Миграция с Heroku Scheduler на Inquir
Перенести скрипт в handler-функцию
Логику задачи — в handler Inquir. Переменные окружения — в секреты рабочего пространства.
Создать пайплайн с cron-триггером
Задайте cron-выражение под ваш интервал Heroku Scheduler. Inquir проверяет выражение при сохранении.
Проверить историю и настроить алерты
После первого прогона откройте историю выполнения. Настройте алерт по SLO длительности для задач с известным окном завершения.
Пример кода
Задача Heroku Scheduler → cron-пайплайн Inquir
Heroku запускает rake task или скрипт как одноразовый dyno. Inquir выполняет ту же логику как serverless-функцию по cron с историей прогонов.
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 могут работать рядом с web dyno на Heroku. Замените задачи Heroku Scheduler cron-пайплайнами Inquir, оставив веб-приложение на Heroku.
Можно ли повторить интервалы Heroku Scheduler?
Да — каждые 10 минут это */10 * * * *; раз в час — 0 * * * *; раз в день в полночь UTC — 0 0 * * *. Стандартные cron-выражения покрывают все интервалы Heroku Scheduler и гораздо больше.