node-cron — Планировщик задач для Node.js

Онлайн-тренажер Python для начинающих

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

Начать курс

Что такое node-cron?

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

Зачем нужен планировщик задач?

В веб-приложениях часто требуется выполнять код в определённое время, а не только по запросу пользователя. Вместо того чтобы использовать внешние сервисы (вроде cron на сервере), node-cron работает прямо внутри вашего Node.js-процесса. Это упрощает развёртывание, не требует настройки системного планировщика и идеально подходит для контейнеризированных приложений (Docker, Kubernetes).

Установка

Установка через npm выполняется одной командой:

npm install node-cron

После установки библиотека готова к использованию — никаких дополнительных зависимостей не требуется.

Основные функции

  • Гибкое расписание — поддержка стандартных cron-паттернов (минуты, часы, дни, месяцы, дни недели).
  • Запуск и остановка — каждая задача может быть запущена или остановлена по требованию.
  • Обработка ошибок — можно задать колбэк для логирования ошибок без краша приложения.
  • Простой синтаксис — всего два метода: schedule и validate.

Пример кода на JavaScript (Node.js)

Создадим задачу, которая каждую минуту выводит в консоль текущее время:

const cron = require('node-cron');

// Задача выполняется каждую минуту: '* * * * *'
cron.schedule('* * * * *', () => {
console.log('Задача выполнена:', new Date().toLocaleString());
});

console.log('Планировщик запущен. Нажмите Ctrl+C для выхода.');

Более сложный пример — отправка отчёта каждый день в 8 утра:

const cron = require('node-cron');

cron.schedule('0 8 * * *', () => {
console.log('Отправка ежедневного отчёта...');
// Здесь вызываете функцию отправки email
}, {
scheduled: true,
timezone: 'Europe/Moscow'
});

Проверка корректности cron-выражения:

const isValid = cron.validate('*/5 * * * *');
console.log(isValid); // true

Когда использовать node-cron?

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

Библиотека node-cron подходит для проектов любого размера — от простых скриптов до микросервисной архитектуры. Она не требует внешних зависимостей и работает стабильно даже при длительном uptime.

Рекомендаций