Запуск функции Azure по расписанию
Часто требуется выполнять определенную логику через заданные интервалы времени. Представьте себе, что вы владелец блога, и вы заметили, что ваши подписчики не читают последние записи. Вы решаете, что лучше всего будет рассылать им раз в неделю напоминание по электронной почте. Эта логика реализуется путем создания приложения-функции в Azure с триггером таймера для вызова функции еженедельно.
Что такое триггер по таймеру?
Триггер по таймеру — это триггер, выполняющий функцию через фиксированные интервалы времени. Чтобы создать триггер по таймеру, необходимо предоставить сведения для двух параметров.
- Имя параметра метки времени. Это просто идентификатор для доступа к триггеру в коде.
- Расписание, которое представляет собой выражение CRON, задающее интервал таймера.
Что такое выражение CRON
Выражение CRON — это строка, состоящая из шести полей, которые представляют набор значений времени.
Порядок этих шести полей в Azure: {second} {minute} {hour} {day} {month} {day of the week}
.
Например, выражение CRON для создания триггера, активируемого каждые пять минут, будет следующим: 0 */5 * * * *
.
Сначала эта строка может показаться запутанной. Мы вернемся к ней и подробно рассмотрим принципы ее построения, когда будем обсуждать выражения CRON.
Для создания выражения CRON необходимо иметь общее представление о некоторых специальных символах.
Специальный знак | Значение | Пример |
---|---|---|
* | Выбирает все значения в поле | Звездочка "*" в поле дня недели означает каждый день. |
, | Разделяет элементы в списке | Запятая "1,3" в поле дня недели означает только понедельники (день 1) и среды (день 3). |
- | Задает диапазон | Дефис "10-12" в поле часа означает диапазон с 10 до 12 часов. |
/ | Задает шаг приращения | Косая черта "*/10" в поле минут означает шаг в 10 минут. |
Теперь вернемся к исходному примеру выражения CRON. Попробуем разобрать его, разбив на отдельные поля.
0 */5 * * * *
Первое поле представляет секунды. Оно поддерживает значения от 0 до 59. Так как это поле содержит нуль, выбирается первое возможное значение, то есть одна секунда.
Второе поле представляет минуты. Значение "*/5" содержит два специальных символа. Во-первых, звездочка (*) означает «выбрать каждое значение в поле». Так как это поле представляет время в минутах, возможные значения — от 0 до 59. Второй специальный символ — это косая черта (/), которая представляет шаг приращения. В сочетании эти символы означают выбор каждого пятого значения из всех возможных значений (0–59). Это можно выразить проще: "каждые пять минут".
Остальные четыре поля числовым образом представляют час в 24-часовой день, день в месяце, месяц в 12-месячном году и день 7-дневной недели. Значки в этих полях означают выбор всех возможных значений. В этом примере мы выбираем "каждый час каждого дня каждого месяца".
В целом все выражение означает "в первую секунду каждой пятой минуты каждого часа каждого дня каждого месяца".
Создание триггера по таймеру
Триггер по таймеру можно создать на портале Azure. В приложении-функции выберите триггер таймера из списка шаблонов триггеров. Введите логику, которая должна выполняться. Укажите имя параметра метки времени и выражение CRON.
В этом модуле мы сосредоточимся на создании триггеров на портале, но вы также можете создавать триггеры программным способом с помощью основных инструментов, Visual Studio или Visual Studio Code.
Триггер таймера вызывает код функции в согласованном расписании. Чтобы определить расписание для триггера по таймеру, следует создать выражение CRON. Это строка, которая представляет набор значений времени.