node-schedule

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

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

Начать курс

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

node-schedule — это гибкая библиотека для планирования задач (cron-подобных) в среде Node.js. Она позволяет выполнять JavaScript/TypeScript функции по расписанию, используя синтаксис cron, интервалы или конкретные даты. Библиотека идеально подходит для создания фоновых задач, периодических уведомлений, очистки данных и других автоматизированных процессов.

Зачем нужен node-schedule?

В веб-приложениях часто требуется выполнять код не по запросу пользователя, а по времени. Например: отправка ежедневных отчетов, архивация логов, проверка статусов серверов. node-schedule предоставляет простой и надежный способ реализовать это без сложных систем очередей. В отличие от setInterval, она поддерживает сложные cron-расписания и учитывает часовые пояса.

Установка

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

npm install node-schedule
# или
yarn add node-schedule

Для TypeScript дополнительно установите типы:

npm install @types/node-schedule --save-dev

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

  • Cron-расписания: Поддержка стандартного cron-синтаксиса (минуты, часы, дни, месяцы).
  • Отмена задач: Возможность отменить запланированное выполнение.
  • Одноразовые задачи: Выполнение в конкретную дату.
  • Рекуррентные задачи: Повторение с фиксированным интервалом.
  • Обработка ошибок: Встроенная поддержка колбэков для ошибок.

Пример кода на TypeScript

import * as schedule from 'node-schedule';

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

// Одноразовая задача через 10 секунд
const date = new Date(Date.now() + 10000);
schedule.scheduleJob(date, () => {
  console.log('Одноразовая задача');
});

// Отмена задачи через 30 секунд
setTimeout(() => {
  job.cancel();
  console.log('Задача отменена');
}, 30000);

// Задача с рекуррентным правилом
const rule = new schedule.RecurrenceRule();
rule.hour = 14;
rule.minute = 30;
schedule.scheduleJob(rule, () => {
  console.log('Задача в 14:30 каждый день');
});

Когда использовать

node-schedule идеально подходит для:

  • Фоновых утилит: очистка временных файлов, бэкапы.
  • Уведомлений: рассылка писем или push-уведомлений по расписанию.
  • Мониторинга: периодическая проверка здоровья сервисов.
  • Интеграций: синхронизация с внешними API по cron.

Не используйте node-schedule для задач, требующих высокой точности (миллисекунды) или распределенного выполнения (для этого лучше подходят очереди типа Bull или RabbitMQ).

Библиотека легковесна, не требует внешних зависимостей и отлично работает в связке с Express, NestJS или чистом Node.js.

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