Сравнение · Inquir Compute

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

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

1

Перенести скрипт задачи в функцию-обработчик

Перенесите логику скрипта в функцию-обработчик Inquir. Переменные окружения становятся секретами воркспейса.

2

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

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

3

Проверить историю запусков и настроить алерты

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

Задача Heroku Scheduler → пайплайн Inquir по расписанию

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

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 могут работать рядом с веб-приложением на Heroku. Замените задачи Heroku Scheduler cron-пайплайнами Inquir, оставив web dyno на Heroku.

Можно ли точно повторить интервалы Heroku Scheduler?

Да — каждые 10 минут это */10 * * * *; раз в час — 0 * * * *; раз в день в полночь UTC — 0 0 * * *. Стандартные cron-выражения покрывают все интервалы Heroku Scheduler и гораздо больше.