Оплачивается ли функция Azure в плане потребления за время, потраченное на ожидание Thread.Sleep ()? - PullRequest
2 голосов
/ 19 июня 2019

Я пишу долговременную функцию Azure для обработки различных массовых операций. Код может получить 1000 операций в файле, и он разбивает их так, чтобы 1000 раз вызывать одну и ту же функцию активности.

Проблема в том, что это может затопить API, который использует функция действия, до такой степени, что наша функция активности получает 429 - Слишком много запросов от API. Мы думаем о том, чтобы прочитать предложенный заголовок Retry-After и перевести поток в спящий режим на этот период времени.

В этом случае мы задаемся вопросом, будет ли Azure выставлять нам счета за секунды, которые мы ждем. Кроме того, будет ли это время учитываться при превышении времени ожидания для функции Azure?

1 Ответ

3 голосов
/ 19 июня 2019

Во-первых, используйте Durable Function Timers, а не Thread.Sleep().Затем применяется следующее:

Если ваше функциональное приложение использует план потребления, вам все равно будет выставлен счет за любое время и объем памяти, использованный оставленной функцией активности.По умолчанию функции, выполняемые в плане потребления, имеют время ожидания пять минут.Если этот предел превышен, узел функций Azure перезагружается, чтобы остановить все выполнение и предотвратить ситуацию выставления счетов за услугу.Тайм-аут функции настраивается.

https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-timers

...