Поделиться через


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

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

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

Примечание.

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

Обзор

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

Примечание.

Начиная с 1 июня 2024 г. все созданные Служба приложений приложения будут иметь возможность создать уникальное имя узла по умолчанию с помощью соглашения <app-name>-<random-hash>.<region>.azurewebsites.netоб именовании. Существующие имена приложений останутся неизменными.

Пример: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Дополнительные сведения см. в разделе "Уникальное имя узла по умолчанию" для ресурса Служба приложений.

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

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

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

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

Следующие типы файлов не поддерживаются:
.cmd, .bat, .exe (с помощью Windows cmd)
.ps1 (с помощью PowerShell)
.sh (использование Bash)
.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. Введите параметры добавления веб-заданий , указанные в таблице, а затем нажмите кнопку "Создать веб-задание".

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

    Параметр Пример значения Описание
    Имя 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_STOPPED и значением 1, чтобы остановить все веб-задания, запущенные на вашем сайте. Этот метод позволяет предотвратить выполнение конфликтующих веб-заданий как в промежуточных, так и в рабочих слотах. Кроме того, задав для параметра WEBJOBS_DISABLE_SCHEDULE значение 1, можно отключить активируемые веб-задания на сайте или промежуточном слоте. Для слотов не забудьте включить параметр слота развертывания, чтобы сам параметр не менялся.

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

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

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

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

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

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

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

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

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

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

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