Использование Task.Delay внутри действия надежной функции Azure - PullRequest
0 голосов
/ 14 мая 2019

Можно ли использовать Task.Delay внутри надежной функции Azure Активность , как это?

Я опрашиваю хранилище данных, которые должны поступить в течение 20-30 секунд или около того.

 while (requestAccepted && retryCount < 8)
        {
            object savedData = await DataManagementService.GetSessionData(processSessionId);

            if (savedData != null && savedData.GetType().GetProperties().Any())
            {
                return true;
            }

            await Task.Delay(TimeSpan.FromSeconds(10));

            retryCount++;
        }

Функция таймеров функций с использованием context.CreateTimer, поясненная здесь , доступна только для Azure Оркестровка Функция, но не Активность Функция.

1 Ответ

1 голос
/ 14 мая 2019

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

Однако, лучший вариантсостоит в том, чтобы переместить вызов GetSessionData() в функцию действия, преобразовать эту функцию опроса в оркестратор, чтобы вы могли заменить Task.Delay() на context.CreateTimer(), и вызвать его из основного оркестратора через context.CallSubOrchestratorAsync().

...