Выполнение фоновых задач с помощью веб-заданий в службе приложений Azure

Примечание.

Веб-задания для контейнера Windows, кода Linux и контейнера Linux доступны в предварительной версии. Веб-задания для кода Windows общедоступны и недоступны в предварительной версии.

Вы можете развернуть веб-задания с помощью портала Azure для отправки исполняемого файла или скрипта. Фоновые задачи можно выполнять в Службе приложений Azure.

Если вместо службы приложение Azure вы используете Visual Studio для разработки и развертывания веб-заданий, см. статью "Развертывание веб-заданий с помощью Visual Studio".

Обзор

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

Пакет SDK веб-заданий Azure можно использовать с веб-заданиями для упрощения многих задач программирования. Дополнительные сведения см. в разделе Информация о пакете SDK веб-заданий.

Функции Azure предоставляют еще один способ запуска программ и сценариев. Сравнение веб-заданий и функций см. в статье Сравнение Microsoft Flow, Logic Apps, функций и веб-заданий Azure.

Типы веб-заданий

Поддерживаемые типы файлов для сценариев и программ

Следующие типы файлов не поддерживаются:
.cmd, .bat, .exe (с помощью Windows cmd)
.ps1 (с помощью PowerShell)
.sh (использование Bash)
.php (с помощью PHP)
.py (с помощью Python)
.js (использование Node.js)
.jar (с помощью Java)

Необходимые среды выполнения этих типов файлов уже установлены в экземпляре веб-приложения.

Непрерывные и триггерные веб-задания

В следующей таблице описываются различия между непрерывными и триггерными веб-заданиями:

Непрерывные Активируемые
Запускается сразу после создания веб-задания. Чтобы предотвратить завершение задания, программа или сценарий обычно выполняют свою работу в бесконечном цикле. Если задание завершается, его можно перезапустить. Обычно используется с пакетом SDK веб-заданий. Запускается только при активации вручную или по расписанию.
Запускается на всех экземплярах, где выполняется веб-приложение. При необходимости можно ограничить веб-задание одним экземпляром. Запускается на одном экземпляре, который выбран Azure для балансировки нагрузки.
Поддерживает удаленную отладку. Не поддерживает удаленную отладку.
Код развертывается в \site\wwwroot\app_data\Jobs\Continuous. Код развертывается в \site\wwwroot\app_data\Jobs\Triggered.

Примечание.

Время ожидания веб-приложения может истечь через 20 минут бездействия, и только запросы к реальному веб-приложению могут сбросить таймер. Таймер не будет сброшен при просмотре конфигурации приложения на портале Azure или выполнении запросов к сайту расширенных средств (https://<app_name>.scm.azurewebsites.net). Если веб-приложение, в котором размещено ваше задание, настроено для выполнения непрерывных или запланированных заданий либо использования триггеров на основе событий, установите параметр Всегда включено в Azure на странице Конфигурация веб-приложения. Этот параметр позволяет гарантировать, что такие типы веб-заданий будут надежно выполняться. Эта функция доступна только в ценовых категориях "Базовый", "Стандартный" и "Премиум".

Создание непрерывного веб-задания

Внимание

Если для приложения настроена система управления версиями, веб-задания следует развертывать как часть интеграции с системой управления версиями. Когда вы настроите для приложения систему управления версиями, веб-задание нельзя будет добавить через портал Azure.

  1. На портале Azure перейдите на страницу Служба приложений веб-приложения службы приложений, приложения API или мобильного приложения.

  2. В левой области выберите веб-задания, а затем нажмите кнопку "Добавить".

    Снимок экрана: добавление веб-задания в приложение Служба приложений на портале.

  3. Введите параметры добавления веб-заданий , указанные в таблице, а затем нажмите кнопку "Создать веб-задание".

    Снимок экрана: настройка непрерывного веб-задания mult-экземпляра для приложения Служба приложений.

    Параметр Пример значения Описание
    Имя myContinuousWebJob Имя, которое является уникальным в пределах приложения службы приложений. Должен начинаться с буквы или числа и не должен содержать специальные символы, отличные от "-" и "_".
    Отправка файлов ConsoleApp.zip Файл .zip , содержащий исполняемый файл или файл скрипта, а также все вспомогательные файлы, необходимые для запуска программы или скрипта. Поддерживаемые типы исполняемых файлов или файлов сценариев перечислены в разделе Поддерживаемые типы файлов.
    Тип Непрерывные Типы веб-заданий описаны ранее в этой статье.
    Масштабировать Несколько экземпляров Доступно только для непрерывных веб-заданий. Определяет, выполняется ли программа или скрипт на всех экземплярах или одном экземпляре. Вариант для запуска на нескольких экземплярах не применяется в ценовых категориях "Бесплатный" или "Общий".
  4. Новое веб-задание появится на странице Веб-задания. Если появится сообщение о том, что веб-задание было добавлено, но вы его не видите, выберите Обновить.

  5. Чтобы остановить или перезапустить непрерывный веб-заданий, щелкните правой кнопкой мыши веб-задание в списке и нажмите кнопку "Остановить " или "Запустить ", а затем подтвердите выбор.

    Снимок экрана: остановка непрерывного веб-задания в портал Azure.

Создание веб-задания с активацией вручную

  1. На портале Azure перейдите на страницу Служба приложений веб-приложения службы приложений, приложения API или мобильного приложения.

  2. В левой области выберите веб-задания, а затем нажмите кнопку "Добавить".

    Снимок экрана: добавление веб-задания в приложение Служба приложений на портале (вручную активируется веб-задание).

  3. Введите параметры добавления веб-заданий , указанные в таблице, а затем нажмите кнопку "Создать веб-задание".

    Снимок экрана: настройка веб-задания, активированного вручную для приложения Служба приложений.

    Параметр Пример значения Описание
    Имя myTriggeredWebJob Имя, которое является уникальным в пределах приложения службы приложений. Должен начинаться с буквы или числа и не должен содержать специальные символы, отличные от "-" и "_".
    Отправка файлов ConsoleApp1.zip Файл .zip , содержащий исполняемый файл или файл скрипта, а также все вспомогательные файлы, необходимые для запуска программы или скрипта. Поддерживаемые типы исполняемых файлов или файлов сценариев перечислены в разделе Поддерживаемые типы файлов.
    Тип Активируемые Типы веб-заданий описаны ранее в этой статье.
    Триггеры Руководство
  4. Новое веб-задание появится на странице Веб-задания. Если появится сообщение о том, что веб-задание было добавлено, но вы его не видите, выберите Обновить.

  5. Чтобы запустить веб-задание вручную, щелкните правой кнопкой мыши веб-задание в списке и нажмите кнопку "Выполнить ", а затем подтвердите выбор.

    Снимок экрана, на котором показано, как запустить веб-задание вручную в портал Azure.

Создание запланированного веб-задания

Также запускается запланированное веб-задание. Вы можете запланировать автоматическую активацию по указанному расписанию.

  1. На портале Azure перейдите на страницу Служба приложений веб-приложения службы приложений, приложения API или мобильного приложения.

  2. В левой области выберите веб-задания, а затем нажмите кнопку "Добавить".

    Снимок экрана: добавление веб-задания в приложение Служба приложений на портале (запланированное веб-задание).

  3. Введите параметры добавления веб-заданий , указанные в таблице, а затем нажмите кнопку "Создать веб-задание".

    Снимок экрана: настройка запланированного веб-задания в приложении Служба приложений.

    Параметр Пример значения Описание
    Имя myScheduledWebJob Имя, которое является уникальным в пределах приложения службы приложений. Должен начинаться с буквы или числа и не должен содержать специальные символы, отличные от "-" и "_".
    Отправка файлов ConsoleApp.zip Файл .zip , содержащий исполняемый файл или файл скрипта, а также все вспомогательные файлы, необходимые для запуска программы или скрипта. Поддерживаемые типы исполняемых файлов или файлов сценариев перечислены в разделе Поддерживаемые типы файлов.
    Тип Активируемые Типы веб-заданий описаны ранее в этой статье.
    Триггеры Запланированные Для надежной работы расписания включите функцию Always On. Она доступна только в ценовых категориях "Базовый", "Стандартный" и "Премиум".
    Выражение CRON 0 0/20 * * * * Выражения CRON описаны в следующем разделе.
  4. Новое веб-задание появится на странице Веб-задания. Если появится сообщение о том, что веб-задание было добавлено, но вы его не видите, выберите Обновить.

  5. Запланированное веб-задание выполняется по расписанию, определенному выражением CRON. Чтобы запустить его вручную в любое время, щелкните правой кнопкой мыши веб-задание в списке и нажмите кнопку "Выполнить ", а затем подтвердите выбор.

    Снимок экрана: запуск веб-задания вручную в портал Azure.

Выражения NCRONTAB

Выражение NCRONTAB можно ввести на портале или включить в файл settings.job, размещенный в корне ZIP-файла веб-задания, как показано в следующем примере:

{
    "schedule": "0 */15 * * * *"
}

Дополнительные сведения см. в статье Планирование активируемого веб-задания.

Примечание.

Часовой пояс по умолчанию, используемый в выражениях CRON, — время в формате UTC. Если нужно использовать другой часовой пояс в выражении CRON, создайте для приложения-функции параметр приложения с именем WEBSITE_TIME_ZONE. См. сведения о часовых поясах NCRONTAB.

Управление веб-заданиями

С помощью портала Azure можно управлять отдельными веб-заданиями, выполняемыми на сайте. Перейдите к Параметры> WebJobs, выберите веб-задание, и вы можете запустить и остановить веб-задание. Вы также можете просмотреть и изменить пароль веб-перехватчика, запускающего веб-задание.

Также можно добавить параметр приложения с именем WEBJOBS_STOPPED и значением 1, чтобы остановить все веб-задания, запущенные на вашем сайте. Этот метод позволяет предотвратить выполнение конфликтующих веб-заданий как в промежуточных, так и в рабочих слотах. Кроме того, задав для параметра WEBJOBS_DISABLE_SCHEDULE значение 1, можно отключить активируемые веб-задания на сайте или промежуточном слоте. Для слотов не забудьте включить параметр слота развертывания, чтобы сам параметр не менялся.

Просмотр журнала заданий

  1. Для веб-задания, который вы хотите просмотреть, выберите журналы.

    Снимок экрана: доступ к журналам для веб-задания.

  2. На странице WebJob Details (Подробности веб-задания) выберите время, чтобы просмотреть подробные сведения об одном выполнении.

    Снимок экрана: выбор запуска веб-задания для просмотра подробных журналов.

  3. На странице сведений о выполнении веб-заданий можно выбрать скачивание, чтобы получить текстовый файл журналов, или выбрать ссылку на вкладку "Таблицы веб-заданий" в верхней части страницы, чтобы просмотреть журналы для другого веб-задания.

Состояния веб-задания

Ниже приведен список распространенных состояний веб-заданий:

  • Инициализация приложения запущена, а веб-задание проходит через процесс инициализации.
  • Запуск веб-задания запускается.
  • Запуск веб-задания выполняется.
  • ОжиданиеRestart A непрерывный веб-заданий завершается менее чем за две минуты после запуска по любой причине, и Служба приложений ожидает 60 секунд до перезапуска веб-задания. Если непрерывный веб-заданий завершает работу после двухминутной отметки, Служба приложений не ожидает 60 секунд и немедленно перезагрузит веб-задание.
  • Остановлен веб-задание было остановлено (обычно из портал Azure) и в настоящее время не выполняется и не будет выполняться до тех пор, пока вы снова не запустите его вручную, даже для непрерывного или запланированного веб-задания.
  • Прервано это может произойти по многим причинам, например, когда долгое веб-задание достигает маркера времени ожидания.

Следующие шаги

Пакет SDK веб-заданий Azure может использоваться с веб-заданиями для упрощения многих задач программирования. Дополнительные сведения см. в разделе Информация о пакете SDK веб-заданий.