WebJobs SDK supports, передающий аргумент CancellationToken
функции, которая используется SDK для уведомления о запущенных функциях остановки хоста. Я заметил, что запущенные функции не уведомляются, если приложение/функция заменяется новой версией. Это проблема, если функции предназначены для работы в течение более длительного периода времени, так как в итоге вы можете запустить «старую» логику, не зная ее.Обнаружение обновления/перераспределения внутри работы Функция Azure
Например, если вы создаете простую функцию, которая будет работать вечно (или до отмены):
using System;
using System.Threading;
public static async Task Run(string input, TraceWriter log, CancellationToken token)
{
while (!token.IsCancellationRequested)
{
token.ThrowIfCancellationRequested();
log.Info($"Input: {input}");
await Task.Delay(2000, token).ConfigureAwait(false);
}
}
Если вы бежите, что, а затем обновить код каким-либо образом и перераспределять (или сохранить, если вы находитесь на портале Azure Functions), вы увидите, что функция перекомпилирована, но экземпляр текущей функции не остановлен и продолжит выполнение предыдущей версии кода до тех пор, пока вы не отключите его вручную.
Есть ли способ обнаружить перераспределение внутри выполняемой функции?
В моем случае CancellationToken не запрашивает аннулирование при перезапуске приложения или повторном развертывании посередине или запуске функции. Любые подсказки? – akazemis