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


Выполнение фоновых задач с помощью WebJobs

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

Обзор

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

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

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

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

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

Следующие типы файлов поддерживаются:

  • Использование команды Windows cmd: .cmd, .bat, .exe
  • Использование PowerShell: .ps1
  • Использование Bash: .sh
  • Использование Node.js: .js
  • Использование Java: .jar

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

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

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

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

Примечание.

Время ожидания веб-приложения может истечь через 20 минут бездействия, и только запросы к реальному веб-приложению могут сбросить таймер. Просмотр конфигурации приложения на портале Azure или запросы на сайт расширенных средств не сбрасывают таймер. Если вы настраиваете веб-приложение, которое выполняет задание непрерывно, по расписанию или с использованием триггеров, основанных на событиях, включите настройку Always on в разделе Конфигурация вашего веб-приложения в Azure. Параметр Always on помогает убедиться, что эти типы WebJobs выполняются надежно. Эта функция доступна только в ценовых категориях "Базовый", "Стандартный" и "Премиум".

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

Внимание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выражения NCRONTAB

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

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

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

Примечание.

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

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

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

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

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

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

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

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

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

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

Состояние WebJob

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

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

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

Руководство: Выполнение фоновых задач с помощью WebJobs