Непрерывное "изящное" завершение работы веб-задания Azure занимает менее 5 секунд


Я нашел этот блог о WebJobs "изящное" завершение работы - http://blog.amitapple.com/post/2014/05/webjobs-graceful-shutdown/#.VNZbLPmsXZ0

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

Я хочу отправить электронное письмо, когда мое веб-задание закрывается, поэтому я попробовал метод, описанный в блоге, однако это письмо не отправляется (у меня есть письмо, которое отправляет OK, когда веб-задание запускается).

Просмотр журналов веб-задания Я думаю, что это может быть потому, что выключение занимает 1 секунду, а не 5 секунд - если я правильно читаю журналы.

На скриншоте показано, что в 18: 07: 58 "WebJob останавливается", а затем в 18:07:58" статус изменен на остановлен", то есть не 5 секунд.

Введите описание изображения здесь

Кто-нибудь знает, как я могу гарантировать, что период отключения составляет 5 секунд?

Или даже если можно продлить этот льготный период отключения до более чем 5 секунд для непрерывного - Задания?

Заранее спасибо

** обновление **

Моя проблема заключалась в том, что я забыл, что обработчик событий FileWatcher находится в другом потоке от основного потока. Таким образом, основной поток заканчивался, и работа останавливалась, прежде чем логика обработчика событий заканчивалась. Я принял комментарий Амита Эппла, поскольку это указало мне в правильном направлении. Спасибо вам обоим за Ваш вклад.

2 2

2 ответа:

WebJobs runtime будет ждать 5 секунд по умолчанию, прежде чем убить процесс. Как я вижу из журналов, процесс фактически вышел сам по себе (вероятно, так как вы реализовали обнаружение при выключении), поэтому не было причин ждать, и процесс завершения работы продолжился.

"stopping_wait_time" это правильный параметр для использования, чтобы продлить 5 секунд по умолчанию.

Хорошая вещь об открытом исходном коде, я могу показать вам код для этот: https://github.com/projectkudu/kudu/blob/master/Kudu.Core/Jobs/ContinuousJobRunner.cs#L156-L190

Откуда: https://github.com/projectkudu/kudu/wiki/Web-jobs#continuous

Вы можете изменить льготный период задания, указав его (в секундах) в настройках .файл задания (должен находиться в том же корневом каталоге, что и сценарий Иова).

{ "stopping_wait_time": 60 }

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

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