Запускайте периодические задачи в Node с помощью node-cron

Что такое Крон? Cron [https://en.wikipedia.org/wiki/Cron] - это утилита планирования, которая работает как процесс-демон в фоновом режиме Unix-подобных систем. Он чрезвычайно популярен для выполнения периодических задач, которые могут быть любыми по вашему выбору, например, создание резервной копии или удаление данных из базы данных. Вы можете добавлять задачи в Cron через командную строку, используя команду crontab -e. Использование аргумента -e переведет его в режим редактирования и откроет редактор по умолчанию, в который вы можете добавить задание. Синтаксис com

Что такое Крон?

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

Вы можете добавлять задачи в Cron через командную строку, используя команду crontab -e . Использование -e переведет его в режим редактирования и откроет редактор по умолчанию, в который вы можете добавить задание. Синтаксис команды выглядит так:

 1 2 3 4 5 [USER] /path/to/command arg1 arg2 

Цифры 1-5 представляют различные временные интервалы, которые вы можете указать для планирования работы. Более подробная информация ниже:

  • 1: Минута (0-59)
  • 2: Час (0–23)
  • 3: День (0–31)
  • 4: Месяц (0–12, где 12 - декабрь)
  • 5: День недели (0-7, где воскресенье - 0 или 7)

USER является необязательным и используется для указания, от имени какого пользователя следует запускать команду. Вы также можете указать пользователя, используя параметр -u . Есть намного больше опций и вариаций параметров расписания, но мы не будем здесь вдаваться в подробности. В Интернете есть множество других ресурсов, где вы можете найти эти подробности.

Вот простой пример того, как запланировать запуск скрипта с помощью Cron:

 45 17 3 * * /path/to/script.sh 

Затем Cron запускал этот сценарий в 17:45 3-го числа каждого месяца. Хотя синтаксис поначалу может немного сбивать с толку, на самом деле это очень эффективный способ планирования повторяющихся задач. Этот формат принят во многих программах и утилит для задания расписаний. Dq4

узел-cron

Что это?

Утилита Cron стала синонимом задач планирования, отсюда и название node-cron На самом деле он не использует и не взаимодействует с находящейся ниже утилитой Cron, а просто планирует и запускает периодические задачи для вас с помощью функции Node setTimeout() . Он делает это путем анализа указанного вами расписания формата Cron, определяет, когда должен быть следующий «тик», и соответственно устанавливает тайм-аут.

Как это использовать

Чтобы использовать node-cron , вам нужно запланировать программный запуск функции, что на самом деле может быть для вас более удобным, чем возня с командной строкой. Простую функцию можно запланировать следующим образом:

 var cron = require('cron'); 
 
 var job = new cron.CronJob('* * * * *', function() { 
 console.log('Function executed!'); 
 }, null, true); 

При запуске этого кода вы увидите текст « Функция выполнена! 'выводится на консоль раз в минуту.

Вы даже можете немного усложнить задачу и указать часовой пояс, в котором должна выполняться задача. Или еще один вариант - сказать node-cron чтобы он еще не запускал задание. Таким образом, вы можете инициализировать задание, а затем использовать .start() и .stop() только тогда, когда они вам нужны. См. Полную документацию для получения полного списка параметров и опций.

Преимущества и недостатки

Лично мне очень нравится node-cron из-за того, насколько легко вы можете программно запланировать запуск кода. А поскольку он работает на Node, вы можете использовать его в любой системе, поддерживающей Node (например, Windows), а не только в Unix-подобных системах. Так что для чего бы вы его ни использовали, код более независим от системы, чем если бы он использовал Cron напрямую.

Самым большим недостатком, на мой взгляд, является то, что, поскольку он не использует Cron ниже, мы не получаем настойчивости, которую мы имели бы в противном случае с Cron. Я имею в виду, что при перезапуске системы наша «работа» больше не будет выполняться. Вместо этого вам придется проделать некоторую дополнительную работу, чтобы снова запустить процесс Node, например, настроить его для запуска при запуске, поместив / связав его в /etc/init.d/ . Сделать это не очень сложно, но и не очень удобно.

comments powered by Disqus