Хотите, чтобы веб-задания Azure поддерживали рабочее состояние (запущено или остановлено) после публикации веб-приложения

Я развертываю веб-приложение и различные связанные (непрерывные) веб-задания в Azure с использованием Visual Studio 2015. До недавнего времени я наблюдал, что после процесса развертывания веб-задания будут сохранять свое состояние; если задание выполняется, оно будет перезапущено, если код был изменен. Если задание было остановлено, код обновится, и веб-задание останется в состоянии остановлено.

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

Это поведение контролируемо?

2 ответа

Амит Apple дал отличный ответ на этот вопрос здесь.

"Чтобы развернуть непрерывный WebJob в остановленном состоянии, просто добавьте файл с именем disable.job в корень вашего WebJob (двоичные файлы), это сообщит платформе, что WebJob в данный момент остановлен".

Я сделал быстрый поиск репо Куду, и похоже, что это все еще в силе. Это на самом деле не в документах Куду, хотя.

Из ContinuousJobRunner.cs проекта Kudu, мы могли найти IsDisabled Свойство используется для проверки того, включена ли веб-работа или нет, следующим образом:

private bool IsDisabled
{
    get { return OperationManager.Attempt(() => FileSystemHelpers.FileExists(_disableFilePath) || Settings.IsWebJobsStopped()); }
}

Как я знаю, для непрерывных WebJobs у нас есть следующие подходы, чтобы остановить это.

1) Войдите в портал Azure, в колонке "НАСТРОЙКИ> Настройки приложения", добавьте новую настройку приложения WEBJOBS_STOPPED и установите значение 1

Примечание. Этот параметр отключит как запущенные, так и непрерывные веб-задания.

2) Добавить файл с именем disable.job в корне ваших двоичных файлов WebJob

Вы можете войти на портал Azure, в колонке "SETTINGS > WebJobs" своего веб-приложения, выбрать свое веб-задание и нажать "Стоп". Также вы можете вручную добавить этот файл. Программным способом вы могли бы использовать API WebJobs с базовой аутентификацией, используя учетные данные развертывания вашего веб-приложения для запуска / остановки WebJob.

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

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

Другие вопросы по тегам