Inquir vs Heroku Scheduler

Альтернатива 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-го числа в полночь» напрямую.

Полные 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

1

Перенести скрипт в handler-функцию

Логику задачи — в handler Inquir. Переменные окружения — в секреты рабочего пространства.

2

Создать пайплайн с cron-триггером

Задайте cron-выражение под ваш интервал Heroku Scheduler. Inquir проверяет выражение при сохранении.

3

Проверить историю и настроить алерты

После первого прогона откройте историю выполнения. Настройте алерт по SLO длительности для задач с известным окном завершения.

Задача Heroku Scheduler → cron-пайплайн Inquir

Heroku запускает rake task или скрипт как одноразовый dyno. Inquir выполняет ту же логику как serverless-функцию по cron с историей прогонов.

jobs/cleanup.mjs
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 и гораздо больше.