Что такое node-cron?
node-cron — это легковесная библиотека для Node.js, которая позволяет запускать JavaScript-функции (задачи) по расписанию, используя синтаксис cron-выражений. Она является аналогом системного планировщика cron в Unix, но работает внутри вашего приложения.
Зачем нужна?
Библиотека необходима для автоматизации рутинных операций на сервере: очистка базы данных, отправка email-рассылок, создание бэкапов, обновление кэша, парсинг данных и любые другие периодические задачи. Это избавляет от необходимости писать собственные таймеры и управлять временными интервалами вручную.
Установка
Установка производится через npm или yarn:
npm install node-cronили
yarn add node-cronОсновные функции
- Простота синтаксиса: использует стандартные cron-выражения (минуты, часы, дни и т.д.)
- Гибкость: поддержка секунд, опциональный часовой пояс, выполнение по будням/выходным
- Управление задачами: методы
start(),stop(),destroy()для контроля выполнения - Лёгкость: не требует внешних зависимостей, размер библиотеки минимален
Пример кода на JavaScript (Node.js)
const cron = require('node-cron');
// Задача: каждую минуту выводить сообщение
cron.schedule('* * * * *', () => {
console.log('Задача выполняется каждую минуту');
});
// Задача: каждый день в 9:30 утра
cron.schedule('30 9 * * *', () => {
console.log('Ежедневная задача в 9:30');
});
// Задача: каждый понедельник в 8:00
cron.schedule('0 8 * * 1', () => {
console.log('Понедельник, 8:00 — время для отчёта');
});
// Задача с секундами: каждые 10 секунд
cron.schedule('*/10 * * * * *', () => {
console.log('Прошло 10 секунд');
});
// Остановка задачи через 5 секунд
const task = cron.schedule('*/1 * * * * *', () => {
console.log('Бесконечная задача');
});
setTimeout(() => {
task.stop();
console.log('Задача остановлена');
}, 5000);Когда использовать
Используйте node-cron, когда вам нужно выполнять код в определённое время или с заданной периодичностью внутри Node.js-приложения. Это идеально подходит для:
- регулярной очистки временных файлов или логов;
- отправки уведомлений или email по расписанию;
- синхронизации данных с внешними API;
- генерации отчётов в фоне;
- запуска тестов или проверок здоровья сервера.
Библиотека не подходит для высоконагруженных распределённых систем (лучше использовать очередь задач), но для большинства типовых сценариев — это оптимальное решение.
Также в библиотеке
Отправка SMS на Java: Обзор и примеры использования API библиотек (Twilio, Nexmo)
StoreKit для Swift: полное руководство с примерами
Интеграция Prometheus метрик в Java-приложения: библиотека simpleclient
Работа с датами в Swift: Foundation и DateFormatter
Мониторинг приложений Kotlin: библиотеки и инструменты для отслеживания производительности