Выполнение фоновых задач с помощью веб-заданий в Службе приложений Azure
Вы можете развернуть веб-задания с помощью портала Azure для отправки исполняемого файла или скрипта. Фоновые задачи можно выполнять в Службе приложений Azure.
Если вместо Служба приложений Azure вы используете Visual Studio для разработки и развертывания веб-заданий, см. статью Развертывание веб-заданий с помощью Visual Studio.
Обзор
Веб-задания — это функция Службы приложений Azure, которая позволяет запускать программу или скрипт в том же экземпляре, где работают веб-приложение, приложение API или мобильное приложение. Использование веб-заданий не требует дополнительных затрат.
Пакет SDK веб-заданий Azure можно использовать с веб-заданиями для упрощения многих задач программирования. Веб-задания пока не поддерживаются для Служба приложений в Linux. Дополнительные сведения см. в разделе Информация о пакете SDK веб-заданий.
Функции Azure предоставляют еще один способ запуска программ и сценариев. Сравнение веб-заданий и функций см. в статье Сравнение Microsoft Flow, Logic Apps, функций и веб-заданий Azure.
Типы веб-заданий
В следующей таблице описаны различия между непрерывными и активируемыми веб-заданиями.
С задержкой | Активируемые |
---|---|
Запускается сразу после создания веб-задания. Чтобы предотвратить завершение задания, программа или сценарий обычно выполняют свою работу в бесконечном цикле. Если задание завершается, его можно перезапустить. Обычно используется с пакетом SDK веб-заданий. | Запускается только при активации вручную или по расписанию. |
Запускается на всех экземплярах, где выполняется веб-приложение. При необходимости можно ограничить веб-задание одним экземпляром. | Запускается на одном экземпляре, который выбран Azure для балансировки нагрузки. |
Поддерживает удаленную отладку. | Не поддерживает удаленную отладку. |
Код развертывается в \site\wwwroot\app_data\Jobs\Continuous . |
Код развертывается в \site\wwwroot\app_data\Jobs\Triggered . |
Примечание
Время ожидания веб-приложения может истечь через 20 минут бездействия, и только запросы к реальному веб-приложению могут сбросить таймер. Таймер не будет сброшен при просмотре конфигурации приложения на портале Azure или выполнении запросов к сайту расширенных средств (https://<app_name>.scm.azurewebsites.net
). Если веб-приложение, в котором размещено ваше задание, настроено для выполнения непрерывных или запланированных заданий либо использования триггеров на основе событий, установите параметр Всегда включено в Azure на странице Конфигурация веб-приложения. Этот параметр позволяет гарантировать, что такие типы веб-заданий будут надежно выполняться. Эта функция доступна только в ценовых категориях "Базовый", "Стандартный" и "Премиум".
Поддерживаемые типы файлов для сценариев и программ
Поддерживаются следующие типы файлов:
- .cmd, .bat, .exe (с использованием командной строки Windows)
- .ps1 (с использованием PowerShell)
- .sh (с использованием Bash)
- .php (с использованием PHP)
- .py (с использованием Python)
- .js (с использованием Node.js)
- .jar (с использованием Java)
Создание непрерывного веб-задания
Важно!
Если для приложения настроена система управления версиями, веб-задания следует развертывать как часть интеграции с системой управления версиями. Когда вы настроите для приложения систему управления версиями, веб-задание нельзя будет добавить через портал Azure.
На портале Azure перейдите на страницу Служба приложений веб-приложения службы приложений, приложения API или мобильного приложения.
В области слева выберите Веб-задания, а затем нажмите кнопку Добавить.
Заполните параметры Добавить веб-задание , как указано в таблице, а затем выберите Создать веб-задание.
Параметр Образец значения Описание имя; myContinuousWebJob Имя, которое является уникальным в пределах приложения службы приложений. Должен начинаться с буквы или цифры и не должен содержать специальные символы, отличные от "-" и "_". Передача файла ConsoleApp.zip Файл .zip , содержащий исполняемый файл или файл скрипта, а также все вспомогательные файлы, необходимые для запуска программы или скрипта. Поддерживаемые типы исполняемых файлов или файлов сценариев перечислены в разделе Поддерживаемые типы файлов. Тип С задержкой Типы веб-заданий описаны ранее в этой статье. Масштабирование Несколько экземпляров Доступно только для непрерывных веб-заданий. Определяет, будет ли программа или сценарий выполняться на всех экземплярах или только на одном экземпляре. Вариант для запуска на нескольких экземплярах не применяется в ценовых категориях "Бесплатный" или "Общий". Новое веб-задание появится на странице Веб-задания. Если появится сообщение о том, что веб-задание было добавлено, но вы его не видите, выберите Обновить.
Чтобы остановить или перезапустить непрерывное веб-задание, щелкните правой кнопкой мыши веб-задание в списке и нажмите кнопку Остановить или Выполнить , а затем подтвердите выбор.
Создание активируемого вручную веб-задания
На портале Azure перейдите на страницу Служба приложений веб-приложения службы приложений, приложения API или мобильного приложения.
В области слева выберите Веб-задания, а затем нажмите кнопку Добавить.
Заполните параметры Добавить веб-задание , как указано в таблице, а затем выберите Создать веб-задание.
Параметр Образец значения Описание имя; myTriggeredWebJob Имя, которое является уникальным в пределах приложения службы приложений. Должен начинаться с буквы или цифры и не должен содержать специальные символы, отличные от "-" и "_". Передача файла ConsoleApp1.zip Файл .zip , содержащий исполняемый файл или файл скрипта, а также все вспомогательные файлы, необходимые для запуска программы или скрипта. Поддерживаемые типы исполняемых файлов или файлов сценариев перечислены в разделе Поддерживаемые типы файлов. Тип Активируемые Типы веб-заданий описаны ранее в этой статье. Триггеры Вручную Новое веб-задание появится на странице Веб-задания. Если появится сообщение о том, что веб-задание было добавлено, но вы его не видите, выберите Обновить.
Чтобы запустить веб-задание, активированное вручную, щелкните правой кнопкой мыши веб-задание в списке и нажмите кнопку Выполнить , а затем подтвердите выбор.
Создание запланированного веб-задания
Также запускается запланированное веб-задание. Вы можете запланировать автоматическую активацию по указанному расписанию.
На портале Azure перейдите на страницу Служба приложений веб-приложения службы приложений, приложения API или мобильного приложения.
В области слева выберите Веб-задания, а затем нажмите кнопку Добавить.
Заполните параметры Добавить веб-задание , как указано в таблице, а затем выберите Создать веб-задание.
Параметр Образец значения Описание имя; myScheduledWebJob Имя, которое является уникальным в пределах приложения службы приложений. Должен начинаться с буквы или цифры и не должен содержать специальные символы, отличные от "-" и "_". Передача файла ConsoleApp.zip Файл.zip, содержащий исполняемый файл или файл скрипта, а также все вспомогательные файлы, необходимые для запуска программы или скрипта. Поддерживаемые типы исполняемых файлов или файлов сценариев перечислены в разделе Поддерживаемые типы файлов. Тип Активируемые Типы веб-заданий описаны ранее в этой статье. Триггеры Запланировано Для надежной работы расписания включите функцию Always On. Она доступна только в ценовых категориях "Базовый", "Стандартный" и "Премиум". Выражение CRON 0 0/20 * * * * Выражения CRON описаны в следующем разделе. Новое веб-задание появится на странице Веб-задания. Если появится сообщение о том, что веб-задание было добавлено, но вы его не видите, выберите Обновить.
Запланированное веб-задание выполняется по расписанию, определенному выражением CRON. Чтобы запустить его вручную в любое время, щелкните правой кнопкой мыши веб-задание в списке и нажмите кнопку Выполнить , а затем подтвердите выбор.
Выражения NCRONTAB
Выражение NCRONTAB можно ввести на портале или включить в файл settings.job
, размещенный в корне ZIP-файла веб-задания, как показано в следующем примере:
{
"schedule": "0 */15 * * * *"
}
Дополнительные сведения см. в статье Планирование активируемого веб-задания.
Примечание
Часовой пояс по умолчанию, используемый в выражениях CRON, — время в формате UTC. Если нужно использовать другой часовой пояс в выражении CRON, создайте для приложения-функции параметр приложения с именем WEBSITE_TIME_ZONE. См. сведения о часовых поясах NCRONTAB.
Управление веб-заданиями
С помощью портала Azure можно управлять отдельными веб-заданиями, выполняемыми на сайте. Просто зайдите в раздел Настройки>Веб-задания, выберите веб-задание, и вы сможете его запустить или остановить. Вы также можете просмотреть и изменить пароль веб-перехватчика, запускающего веб-задание.
Также можно добавить параметр приложения с именем WEBJOBS_STOPPED
и значением 1
, чтобы остановить все веб-задания, запущенные на вашем сайте. Этот метод можно использовать, чтобы предотвратить выполнение конфликтующих веб-заданий как в промежуточном, так и в рабочем слотах. Кроме того, задав для параметра WEBJOBS_DISABLE_SCHEDULE
значение 1
, можно отключить активируемые веб-задания на сайте или промежуточном слоте. Для слотов не забудьте включить параметр слота развертывания, чтобы сам параметр не менялся.
Просмотр журнала заданий
Для веб-задания, которое вы хотите просмотреть, выберите Журналы.
На странице WebJob Details (Подробности веб-задания) выберите время, чтобы просмотреть подробные сведения об одном выполнении.
На странице Сведения о выполнении веб-задания можно выбрать скачивание , чтобы получить текстовый файл журналов, или щелкнуть ссылку навигации веб-заданий в верхней части страницы, чтобы просмотреть журналы для другого веб-задания.
Состояния веб-заданий
Ниже приведен список распространенных состояний веб-заданий:
- Инициализации Приложение только что запущено, и веб-задание проходит процесс инициализации.
- Начиная Веб-задание запускается.
- Запущена Веб-задание выполняется.
- PendingRestart Непрерывное веб-задание завершается менее чем через две минуты с момента запуска по любой причине, и Служба приложений ожидает 60 секунд перед перезапуском веб-задания. Если непрерывное веб-задание завершает работу после двухминутной отметки, Служба приложений не ожидает 60 секунд и немедленно перезапускает веб-задание.
- Остановился Веб-задание было остановлено (обычно из портал Azure) и в настоящее время не выполняется и не будет выполняться, пока вы не запустите его снова вручную, даже для непрерывного или запланированного веб-задания.
- Прервана Это может произойти по ряду причин, например, когда длительное веб-задание достигает маркера времени ожидания.
Дальнейшие действия
Пакет SDK веб-заданий Azure может использоваться с веб-заданиями для упрощения многих задач программирования. Дополнительные сведения см. в разделе Информация о пакете SDK веб-заданий.