Я пишу устойчивую функцию Azure для обработки различных массовых операций. Код может получить 1000 операций в файле, и он разбивает их на вызовы одной и той же функции активности 1000 раз.
Проблема в том, что это может затопить API, который использует функция активности, до такой степени, что наша функция активности получит 429 — слишком много запросов от API. Мы думаем о том, чтобы прочитать предложенный заголовок Retry-After и перевести поток в спящий режим на этот период времени.
В этом случае нам интересно, выставит ли Azure счет за секунды, которые мы ждем. Кроме того, будет ли это время учитываться в качестве тайм-аута для функции Azure?
Во-первых, используйте долговечные таймеры, а не Thread.Sleep()
. Затем применяется следующее:
If your function app uses the Consumption plan, you will still be billed for any time and memory consumed by the abandoned activity function. By default, functions running in the Consumption plan have a timeout of five minutes. If this limit is exceeded, the Azure Functions host is recycled to stop all execution and prevent a runaway billing situation. The function timeout is configurable.
https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-timers
Здравствуйте, я не собираюсь добавлять задержку в уровень оркестровки. Вместо этого я хотел бы приостановить выполнение функции Activity на определенное количество секунд, когда я получаю 429 от API.