Что такое 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.
Также в библиотеке
NestJS для TypeScript: полное руководство с примерами
Prometheus метрики в Go: создание и экспорт метрик в Golang
PDF генерация в C# (.NET): Полное руководство по библиотекам
Работа с XML в PHP: полное руководство по парсингу и созданию XML-документов