У меня есть функция Azure, которая может вызывать несколько конечных точек API, не ожидая результатов ни от одной из них.
Функция Azure запускается по триггеру таймера и запускается каждые 10 секунд.
Все мои вызовы API и параметры для их вызова хранятся в таблице SQL. Я хочу убедиться, что вызовы API выполняются, не дожидаясь завершения определенного вызова.
Это всего лишь план того, что я буду делать.
[FunctionName("FunctionScheduler")]
public static async Task RunAsync([TimerTrigger("*/10 * * * * *")]TimerInfo myTimer, ILogger log)
{
log.LogInformation("FUNCTION SCHEDULER STARTING ..");
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
for(int i=0; i < 20; i++)
{
var task = Task.Run(() => ApiRef1(i, log));
var taskref = await task;
}
}
В настоящее время ApiRef1 () просто выводит значение переменной i. Я получаю ожидаемый результат печати чисел от 0 до 19. Я хочу параллельное выполнение метода ApiRef1 (), который в конечном итоге будет заменен методом, который выглядит следующим образом.
private static void CallApi(string apiName, string apiEndpoint, string methodType, string authenticationType, IDictionary<int, string> parameters, ILogger log)
{
try
{
log.LogInformation($"Call to API {apiName} started.." );
// Call API
}
catch (Exception ex)
{
log.LogInformation($"Exception {ex.Message} occurred.." );
}
}
Есть ли лучший способсделать это или этот метод будет работать?