我有一个 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.." );
}
}
有没有更好的方法来做到这一点,或者这种方法会奏效吗?