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

Вступление:

Вы когда-нибудь задумывались, почему вам нужно тратить много времени на выполнение черных задач с использованием сети, когда у вас есть машина, которая может сделать это за вас?

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

Применения планирования задач:

  1. Веб-парсер и сканеры
  2. Автоматические текстовые сообщения и электронные письма
  3. Анализ данных для трейдинга и многое другое

Требования: Уровень — начальный

  1. основы JS
  2. Основы ноды js
  3. Знание npm и экспресс js.

Если вы никогда не слышали о перечисленных выше технологиях, ознакомьтесь с этой статьей, в которой объясняется настройка вашего первого сервера в узле с использованием экспресс-js.

Имея это в виду, давайте начнем!

Зависимости:

Клонируйте репозиторий этот для начального кода.

После клонирования введите npm i в командном терминале, чтобы загрузить все зависимости.

Стартовый код включает в себя следующие пакеты:

  1. express:веб-фреймворк для простого создания API.
  2. dotenv: создание переменных среды
  3. express-sanitizer:дезинфицировать записи, поступающие через запросы.
  4. nodemon: зависимость от разработчиков для автоматического запуска сервера при любых изменениях кода.

Для автоматизации наших задач мы будем использовать пакет node-cronnpm.

Чтобы загрузить пакет node-cron, введите npm i node-cron в командном терминале. После загрузки проверьте, установлен ли пакет в файле package.json.

Создайте файл «.env» для хранения переменных среды, которые будут использоваться для сохранения номера ПОРТА. В файле «.env» сохраните «PORT = 8000».

Теория:

Чтобы создать надежное задание cron, полезно понять некоторые теории, связанные с ним.

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

  • Согласно документации, node-cron — это простой похожий на cron планировщик задач для JS.

Что такое cron и планирование задач?

  • Cron — это стандартная утилита Unix, которая используется для планирования автоматического выполнения команд через определенные промежутки времени. Это означает, что если вы хотите выполнить скрипт или функцию в заданные промежутки времени без какой-либо внешней команды или стимула, мы «планируем» задание cron.
  • Например, предположим, что вы хотите отправлять сообщение группе людей каждые 5 часов с помощью функции send_message(), тогда вы можете создать задание cron, чтобы send_message() выполняется каждые 5 часов и отправляет сообщения без какого-либо вмешательства.
  • Поскольку node-cron — это пакет npm, он имитирует функциональность cron. Следовательно, он похож на cron.

Как выглядит задание cron?

cron.schedule('5 * * * *', () => {
  console.log('The task is executed');
});
  • звездочки, которые выделены, представляют собой выражение cron, сообщающее планировщику, когда запускать задачу, которая является функцией обратного вызова.
  • Любой фрагмент кода, помещенный в функцию обратного вызова, будет запущен через заданный интервал времени.
  • Здесь мы увидим «Задание выполнено» в консоли через каждые 5 минут последнего часа.

Как запланировать задание cron?

  • Чтобы запланировать задание cron, нам нужно использовать выражение cron, которое указывает, через какой интервал времени должно выполняться задание. Способ создания выражения указан на этой диаграмме:

  • В выражении 5 звездочек, шестая не обязательна.

Пример 1.Создание выражения cron для запуска задания каждые тридцать минут

Выражение: */30 * * * *

Пример 2.Создание выражения cron для запуска задания каждые тридцать минут каждого часа

Выражение: 30 * * * *

Пример 3.Создание выражения cron для запуска задания каждую секунду

Выражение: * * * * * *

Примечание. Здесь мы используем 6 звезд вместо пяти.

Пример 4.Создание выражения cron для запуска задания в 1:00 каждый день

Выражение: 0 1 * * *

Пример 5.Создание выражения cron для запуска задания в 13:00 каждый день

Выражение: * 13 * * *

Создание cron-выражения:

Имея это в виду, давайте напишем выражение cron, которое будет запускаться каждые 2 секунды.

Выражение: */2 * * * * * *

Планирование работы cron:

В VS Code создайте новый файл как «schedulers.js» и импортируйте модуль node-cron.

Создайте задачу, используя импортированный объект cron. В этой задаче мы выведем на консоль «Эта задача запущена, время чч:мм:сс am/pm».

Используя объект date в javascript, мы будем использовать метод .toLocaleString() для получения текущего времени в формате чч:мм:сс. Это просто для того, чтобы увидеть, выполняется ли наше задание каждые две секунды, как указано в выражении cron.

Вот как будет выглядеть наш файл «scheduler.js».

Теперь мы экспортируем наше задание в наш основной файл, которым является файл server.js.

В итоге файл scheduler.js будет выглядеть следующим образом:

В файл server.js импортируйте задание task из файла scheduler.js

Наш окончательный файл server.js будет выглядеть следующим образом:

Запуск сервера:

Введите npm run server в командном терминале, чтобы запустить наш сервер. Если сервер запущен, вы увидите "Сервер запущен на порту 8000" в консоли.

Кроме того, поскольку задание запланировано на запуск каждые 2 секунды, через каждые 2 секунды в консоли будет отображаться сообщение «Задача запущена, время — чч:мм:сс am/pm» .

Как мы можем видеть на изображении выше, запись консоли появляется каждые две секунды, начиная с 23:16:28, и увеличивается каждые 2 секунды, для чего мы и разработали планировщик.

Таким образом, мы создали наш самый первый планировщик заданий с огромным функционалом!

Заключение:

В этой статье мы создали планировщик заданий для выполнения автоматизированных задач.

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

Ура!

Источники:

  1. узел-хрон

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord . Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.