Как предотвратить запуск Azure WebJob после публикации?

У нас есть настройка Azure Website с "промежуточным" слотом для развертывания, и мы используем непрерывный Azure WebJob для обработки длинных фоновых заданий. Похоже, что когда вы публикуете на Веб-сайте (и включаете двоичные файлы WebJob), WebJob перезапустится, если он был ранее остановлен.

Наш текущий процесс развертывания выглядит следующим образом:

  • Развертывание для STAGING
  • Немедленно и быстро остановите WebJob. STAGING (попробуйте запретить обработке 2 сообщений WebJobs)
  • Smoke test и проверьте код при выполнении операций STAGING
  • Остановите веб-приложение ПРОДУКЦИЯ (пусть он сбрасывает сообщения о очереди)
  • Обмен между ПРОИЗВОДСТВОМ И СТАГИРОВАНИЕМ
  • Запустите Producation WebJob (который был только STAGING WebJob).

Есть ли трюк (скажем, файл флага или что-то еще), чтобы сообщить WebJob НЕ запускать после публикации?

Ответ 1

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

Чтобы просмотреть это поведение, вы можете просто остановить непрерывный WebJob и увидеть, что этот файл сгенерирован и помещен в каталог WebJob.

Ответ 2

Вы можете добавить параметр приложения WEBJOBS_STOPPED в свой промежуточный сегмент и установить его на 1. Сделайте этот параметр "Слот", чтобы он не был заменен производством.

Ответ 3

AFAIK, для этого нет готового решения. Однако вы можете установить параметр приложения и проверить код webjob, когда он начнется. Кроме того, вы можете использовать переменную HTTP_HOST для определения среды.