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 станет отличным выбором.

推荐