node-schedule — планировщик задач для TypeScript

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

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

Начать курс

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

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

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

В современных веб-приложениях часто требуется выполнять фоновые операции: очистка кэша, отправка email-рассылок, резервное копирование баз данных, обновление данных из внешних API или генерация отчётов. Node-schedule решает эту задачу без использования внешних сервисов (например, cron в Linux) — всё работает прямо внутри вашего приложения на TypeScript.

Установка

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

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

После этого вы можете импортировать её в TypeScript-проекте:

import * as schedule from 'node-schedule';

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

  • Планирование по cron-строке — задаёте минуты, часы, дни, месяцы и дни недели.
  • Планирование на конкретную дату — передаёте объект Date или строку.
  • Повторение с интервалом — например, каждые 10 минут.
  • Отмена задачи — можно отменить запланированное выполнение.
  • Проверка наличия активных задач — метод scheduledJobs возвращает все активные задачи.

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

import * as schedule from 'node-schedule';

// Задача, которая будет выполняться каждую минуту (на 30-й секунде)
const job = schedule.scheduleJob('30 * * * * *', () => {
    console.log('Задача выполнена в:', new Date().toLocaleString());
});

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

// Повторение каждые 10 секунд
const intervalJob = schedule.scheduleJob('*/10 * * * * *', () => {
    console.log('Каждые 10 секунд');
});

// Отмена задачи через 20 секунд
setTimeout(() => {
    job.cancel();
    console.log('Первая задача отменена');
}, 20000);

// Проверка активных задач
console.log('Активные задачи:', Object.keys(schedule.scheduledJobs));

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

  • Когда нужно выполнять задачи по расписанию внутри Node.js-приложения без внешнего cron.
  • Для простых фоновых задач: очистка логов, отправка писем, обновление кэша.
  • Когда требуется гибкость cron-синтаксиса (например, каждый первый день месяца в 3:00).
  • Если вы не хотите зависеть от операционной системы (кросс-платформенность).

Не используйте node-schedule для высоконагруженных распределённых систем — в таких случаях лучше подходят очереди задач (Bull, RabbitMQ) или облачные планировщики (AWS CloudWatch, GCP Cloud Scheduler).

Библиотека проста, легковесна и идеально подходит для небольших и средних проектов на TypeScript.

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