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


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

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

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

Примечание.

Веб-задания для контейнера Windows, кода Linux и контейнера Linux доступны в предварительной версии. WebJobs for Windows code is generally available and not in preview.

Обзор

Веб-задания — это функция службы приложений Azure, которая позволяет запускать программу или скрипт в том же экземпляре, где и веб-приложение. All app service plans support WebJobs. There's no extra cost to use WebJobs.

Примечание.

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

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

You can use the Azure WebJobs SDK with WebJobs to simplify many programming tasks. For more information, see What is the WebJobs SDK.

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

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

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

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

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

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

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

Непрерывный Triggered
Запускается сразу после создания веб-задания. Чтобы предотвратить завершение задания, программа или сценарий обычно выполняют свою работу в бесконечном цикле. Если задание завершается, его можно перезапустить. Обычно используется с WebJobs SDK. Запускается только при активации вручную или по расписанию.
Запускается на всех экземплярах, на которых работает веб-приложение. You can optionally restrict the WebJob to a single instance. Запускается на одном экземпляре, который выбран Azure для балансировки нагрузки.
Поддерживает удаленную отладку. Не поддерживает удаленную отладку.
Code is deployed under \site\wwwroot\app_data\Jobs\Continuous. Code is deployed under \site\wwwroot\app_data\Jobs\Triggered.

Примечание.

Время ожидания веб-приложения может истечь через 20 минут бездействия, и только запросы к реальному веб-приложению могут сбросить таймер. Viewing the app's configuration in the Azure portal or making requests to the advanced tools site (https://<app_name>.scm.azurewebsites.net) doesn't reset the timer. Если вы настраиваете веб-приложение, которое выполняет задание непрерывно, по расписанию или с использованием триггеров, основанных на событиях, включите настройку Always on в разделе Конфигурация вашего веб-приложения в Azure. Параметр Always on помогает убедиться, что эти типы WebJobs выполняются надежно. Эта функция доступна только в ценовых категориях "Базовый", "Стандартный" и "Премиум".

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

Внимание

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

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

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

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

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

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

    Setting Sample value Описание
    Имя myContinuousWebJob A name that is unique within an App Service app. Должен начинаться с буквы или числа и не должен содержать специальные символы, отличные от "-" и "_".
    Отправка файлов ConsoleApp.zip Файл .zip , содержащий исполняемый файл или файл скрипта, а также все вспомогательные файлы, необходимые для запуска программы или скрипта. Поддерживаемые типы исполняемых файлов или файлов сценариев перечислены в разделе Поддерживаемые типы файлов.
    Тип Непрерывный Типы веб-заданий описаны ранее в этой статье.
    Масштабировать Multi Instance Available only for Continuous WebJobs. Определяет, выполняется ли программа или скрипт на всех экземплярах или одном экземпляре. Вариант для запуска на нескольких экземплярах не применяется в ценовых категориях "Бесплатный" или "Общий".
  4. Новое веб-задание появится на странице Веб-задания. Если появится сообщение о том, что веб-задание было добавлено, но вы его не видите, выберите Обновить.

  5. To stop or restart a continuous WebJob, right-click the WebJob in the list and select the Stop or Run button, then confirm your selection.

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

Создание веб-задания, запускаемого вручную

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

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

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

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

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

    Setting Sample value Описание
    Имя myTriggeredWebJob A name that is unique within an App Service app. Должен начинаться с буквы или числа и не должен содержать специальные символы, отличные от "-" и "_".
    Отправка файлов ConsoleApp1.zip Файл .zip , содержащий исполняемый файл или файл скрипта, а также все вспомогательные файлы, необходимые для запуска программы или скрипта. Поддерживаемые типы исполняемых файлов или файлов сценариев перечислены в разделе Поддерживаемые типы файлов.
    Тип Triggered Типы веб-заданий описаны ранее в этой статье.
    Триггеры Руководство
  4. Новое веб-задание появится на странице Веб-задания. Если появится сообщение о том, что веб-задание было добавлено, но вы его не видите, выберите Обновить.

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

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

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

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

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

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

    Screenshot that shows how to add a WebJob in an App Service app in the portal (scheduled WebJob).

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

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

    Setting Sample value Описание
    Имя myScheduledWebJob A name that is unique within an App Service app. Должен начинаться с буквы или числа и не должен содержать специальные символы, отличные от "-" и "_".
    Отправка файлов ConsoleApp.zip Файл .zip , содержащий исполняемый файл или файл скрипта, а также все вспомогательные файлы, необходимые для запуска программы или скрипта. Поддерживаемые типы исполняемых файлов или файлов сценариев перечислены в разделе Поддерживаемые типы файлов.
    Тип Triggered Типы веб-заданий описаны ранее в этой статье.
    Триггеры Запланировано Для надежной работы расписания включите функцию Always On. Функция Always On доступна только в тарифных планах "Базовый", "Стандартный" и "Премиум".
    Выражение CRON 0 0/20 * * * * Выражения CRON описаны в следующем разделе.
  4. Новое веб-задание появится на странице Веб-задания. Если появится сообщение о том, что веб-задание было добавлено, но вы его не видите, выберите Обновить.

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

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

Выражения NCRONTAB

You can enter a NCRONTAB expression in the portal or include a settings.job file at the root of your WebJob .zip file, as in the following example:

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

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

Примечание.

Часовой пояс по умолчанию, используемый для запуска выражений CRON, — Всемирное координированное время (UTC). To have your CRON expression run based on another time zone, create an app setting for your function app named WEBSITE_TIME_ZONE. Чтобы узнать больше, см. сведения о часовых поясах NCRONTAB.

Manage WebJobs

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

Также можно добавить параметр приложения с именем WEBJOBS_STOPPED и значением 1, чтобы остановить все веб-задания, запущенные на вашем сайте. You can use this method to prevent conflicting WebJobs from running both in staging and production slots. You can similarly use a value of 1 for the WEBJOBS_DISABLE_SCHEDULE setting to disable triggered WebJobs in the site or a staging slot. For slots, remember to enable the Deployment slot setting option so that the setting itself doesn't get swapped.

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

  1. For the WebJob you want to see, select Logs.

    Screenshot that shows how to access logs for a WebJob.

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

    Снимок экрана, показывающий, как выбрать выполнение веб-задания для просмотра его подробных логов.

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

WebJob statuses

The following is a list of common WebJob statuses:

  • Инициализация приложения запущена, а веб-задание проходит через процесс инициализации.
  • Starting The WebJob is starting up.
  • Running The WebJob is running.
  • ОжиданиеПерезапуска Непрерывное веб-задание завершится менее чем через две минуты после запуска по любой причине, а Служба приложений ждет 60 секунд перед его перезапуском. Если непрерывное веб-задание завершается после двухминутной отметки, Служба приложений не ждет 60 секунд и перезапускает веб-задание немедленно.
  • Остановлен Веб-задание было остановлено (обычно через портал Azure) и в настоящее время не выполняется; оно не будет выполняться, пока вы не запустите его вручную заново, даже если это непрерывное или запланированное веб-задание.
  • Aborted This can occur for many of reasons, such as when a long-running WebJob reaches the timeout marker.

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

Пакет SDK веб-заданий Azure может использоваться с веб-заданиями для упрощения многих задач программирования. For more information, see What is the WebJobs SDK.