複数の API エンドポイントからの結果を待たずに呼び出すことができる Azure 関数があります。
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.." );
}
}
これを行うためのより良い方法はありますか、またはこの方法は機能しますか?