DevGang
Авторизоваться

Как запускать Cron Jobs в Node.js?

Вы уже читали руководства по многим типам приложений, которые можно построить с помощью Node.js, но задумывались ли вы, как мы создаем такие проекты, как планировщики задач, автоматические рассылки, планировщики сообщений и т.д., которые требуют, чтобы какая-то система выполняла задачи по определенному расписанию?

Ну, мы можем сделать всё это, запустив cron jobs в Node.js. В этом уроке мы расскажем все о cron jobs, что это такое и как их реализовать в Node.js, а затем создадим планировщик задач с их помощью. Давайте начнём!

Понимание Cron Jobs

Термин «cron jobs» первоначально произошёл от операционной системы Unix. Cron — это планировщик заданий на основе времени в операционных системах на базе — Unix, таких как Linux, macOS и т.д., для периодического выполнения заданий в определенные даты и время.

Сегодня в этой статье мы будем использовать npm "node-cron" для стимулирования этой функции cron job — планирования задач и запуска в определенное время. Давайте начнем с понимания этого модуля и метода, необходимого для нашей задачи.

Использование node-cron для запуска запланированных заданий в Node.js

node-cron - это сторонний модуль, который можно установить в Node.js с помощью NPM. Все, что вам нужно сделать, это выполнить в папке проекта команду npm i node-cron. Этот модуль считается планировщиком задач, написанным на JavaScript на основе GNU crontab, и с его помощью мы можем добиться того же, что делает cron job в операционной системе на базе Unix. 

Синтаксис

const cron = require('node-cron');
 
cron.schedule('* * * * *', () => {
    // Task to be executed
});

Вы можете запутаться, увидев аргумент, передаваемый этому методу, но все очень просто.

Выражение аргумента состоит из шести полей, представляющих секунду (необязательно), минуту, час, день месяца, месяц и день недели, в таком порядке. Мы можем передавать пользовательские значения или использовать звездочку (*) в качестве подстановочного знака.

В приведенном выше синтаксисе мы использовали только звездочки, это означает, что задача или функция обратного вызова, которую мы передали в качестве аргумента этому методу, будет выполняться каждую минуту, каждый час, каждый день месяца, каждый месяц и каждый день недели.

Пример

Предположим, вы хотите отправить сообщение кому-то особенному в его день рождения, 29 сентября, в полночь 12 часов, вы можете легко сделать это, используя приведенный код.

const cron = require('node-cron');
 
cron.schedule('0 0 29 9 * 2024', () => {
    console.log("Happy Birthday!");
});

Здесь мы не определяли * в позиции дня недели, поскольку уже задали день месяца (29) и месяц (9).

Создание приложения-напоминания с помощью node-cron

Теперь, когда мы узнали всё о cron jobs и node-cron, пришло время создать полноценное приложение для их реализации. Для этого мы будем использовать JavaScript и Node.js.

Шаг 1: Создайте папку проекта, затем создайте файл app.js для написания кода Node.js, а затем откройте папку проекта в редакторе кода.

Шаг 2: Откройте терминал и выполните приведенную ниже команду для установки node-cron и readline.

npm i node-cron readline

Модуль readline используется для чтения ввода из командной строки и печати вывода. Мы будем использовать его для получения данных о времени напоминания от пользователей.

Шаг 3: Внутри файла app.js напишите следующий код.

const readline = require('readline');
const cron = require('node-cron');
 
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
 
rl.question('Enter reminder time (DD MM YYYY HH mm): ', (answer) => {
    const [day, month, year, hour, minute] = answer.split(' ');
    const cronExpression = `${minute} ${hour} ${day} ${month} *`;
 
    cron.schedule(cronExpression, () => {
        console.log(`Time to do your task! It's ${hour}:${minute} on ${day}/${month}/${year}`);
        rl.close();
    });
 
    console.log('Reminder set successfully!');
});

Здесь мы сначала импортировали модули readline и node-cron, затем создали интерфейс rl для ввода и вывода данных с помощью метода createInterface().

Затем мы использовали метод question(), чтобы попросить пользователя ввести данные, на основе которых будет создано выражение аргумента и передано в нашу главную функцию cron.schedule() для установки напоминания, после чего мы закрыли интерфейс rl и вывели сообщение об успехе в консоль.

Шаг 4: Запустите приложение, выполнив приведенную ниже команду.

node app.js

Введите необходимую информацию, чтобы установить напоминание. Для тестирования я устанавливаю его на следующую минуту.

Напоминание автоматически появится на консоли в указанное время.

Заключение

Короче говоря, можно запускать cron jobs в Node.js с помощью функции cron.schedule() модуля npm node-cron для установки задач, которые запускаются в определенное время. Эта функция принимает выражение-аргумент, содержащее пять обязательных полей: минуту, час, день месяца, месяц и день недели для установки напоминаний, а также звездочки (*) в качестве подстановочного знака, если какое-либо поле передавать необязательно.

Мы надеемся, что вы получили удовольствие от чтения этого материала!

Источник:

#JavaScript #NodeJS
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу