Непрерывное "изящное" завершение работы веб-задания 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 ответа:
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 секунд вместо значения по умолчанию.
Кроме того, имейте в виду, что если у вас запущено веб-задание, вы должны настроить веб-сайт на "всегда включен". Это может быть настраивается на портале Управления.