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

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

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

Начать курс

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

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

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

В веб-разработке часто требуется выполнять код не сразу, а через определённые интервалы. Ручной запуск скриптов через setInterval() или setTimeout() неудобен для сложных расписаний (например, «каждый второй вторник месяца в 15:00»). node-cron решает эту проблему, предоставляя гибкий и читаемый способ задания времени.

Установка

Установите библиотеку через npm:

npm install node-cron

Или используйте yarn:

yarn add node-cron

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

  • cron.schedule(expression, callback) — запускает функцию по расписанию.
  • cron.validate(expression) — проверяет корректность cron-выражения.
  • task.stop() — останавливает задачу.
  • task.start() — возобновляет выполнение остановленной задачи.
  • Поддержка секунд (дополнительное поле в начале выражения).

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

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

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

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

// Запустить задачу
task.start();

// Остановить задачу через 5 минут
setTimeout(() => {
  task.stop();
  console.log('Задача остановлена');
}, 300000);

Расшифровка cron-выражения: '* * * * *' — минута, час, день месяца, месяц, день недели. Звёздочка означает «каждый». Например, '0 9 * * 1-5' — каждый будний день в 9:00.

Пример с валидацией:

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

const expression = '30 4 * * 0'; // каждое воскресенье в 4:30 утра
if (cron.validate(expression)) {
  cron.schedule(expression, () => {
    console.log('Воскресная уборка данных...');
  });
} else {
  console.error('Некорректное cron-выражение');
}

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

  • Автоматизация бэкапов: создание резервных копий базы данных раз в сутки.
  • Отправка рассылок: ежедневная рассылка дайджеста подписчикам.
  • Мониторинг: проверка доступности внешних API каждые 5 минут.
  • Очистка кэша: удаление устаревших данных из Redis или файловой системы.
  • Парсинг данных: загрузка курсов валют или новостей по расписанию.

Библиотека идеально подходит для небольших и средних проектов, где не нужен полноценный оркестратор задач вроде Bull или Agenda. Если ваше приложение работает на одном сервере и требует простого cron-подобного поведения — node-cron станет отличным выбором.

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