Перейти к содержанию

Планирование задач и фоновых заданий с node-cron

Начало урока

Планирование задач и фоновых заданий с node-cron

Запускайте повторяющуюся работу по расписанию, не дожидаясь запроса

Главная идея: Почти любому реальному API нужна работа, которую никто из пользователей не запрашивает напрямую: очистка просроченных сессий в 3 часа ночи, отправка ежедневной сводки, повторная попытка неудавшихся платежей каждые десять минут, опрос стороннего сервиса. Запланированное задание выполняется по заданным вами часам, в фоне, отдельно от обработчиков запросов. Библиотека node-cron позволяет описать эти часы привычной cron-строкой и передать ей функцию для запуска.
К концу урока вы сможете:
  • читать и писать cron-выражения из пяти полей;
  • планировать, запускать и останавливать задание с помощью node-cron;
  • предотвращать наложение запусков медленного задания с помощью простого флага-замка;
  • объяснять, почему запланированная работа должна быть вне обработчиков запросов;
  • добавить настоящее ночное задание очистки в существующий Express API.

1. Зачем нужна запланированная работа

Ваш API большую часть жизни реагирует: приходит запрос, вы выполняете обработчик, отправляете ответ. Но у многих важных дел нет запроса позади. Никто не заходит на URL, чтобы вчерашние временные файлы удалились. Никто не нажимает кнопку, чтобы отправилось письмо-дайджест в 8 утра. Эта работа должна происходить по расписанию — по графику, который программа ведёт сама для себя.

Типичные запланированные задания, которые встречаются в продакшене:

  • Очистки — удаление просроченных токенов сброса пароля, обрезка старых логов, удаление брошенных загрузок.
  • Отчёты — построение ночной сводки продаж и отправка её команде по почте.
  • Напоминания — уведомление пользователей, у которых пробный период кончается завтра.
  • Опрос — каждые несколько минут спрашивать платёжный сервис, прошли ли отложенные списания.

Аналогия. Представьте смотрителя здания. Посетители (запросы) приходят и уходят весь день, а сотрудники на ресепшене (ваши обработчики маршрутов) их обслуживают. Но смотритель работает по графику, о котором никто не спрашивает: выносить мусор каждую ночь, проверять котёл каждое утро, поливать цветы по понедельникам. Запланированные задания — это смотритель вашего сервера: тихий, регулярный и незаменимый.

В Unix-системах у этого графика есть классическое имя: cron — фоновый демон, запускающий команды в заданное время. node-cron переносит ту же идею внутрь вашего Node-процесса, позволяя планировать JavaScript-функции, не выходя из приложения и не редактируя конфигурацию операционной системы.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя