У меня есть функция Azure, которую я вызываю параллельно, используя postasync ...
Я размещаю все свои задачи в очереди, а затем жду ответов параллельно, используя "WhenAll".
Я могу подтвердить, что в Azure наблюдается всплеск активности HTTP, а затем активность HTTP прекращается на моем локальном компьютере, пока я ожидаю ответов от Azure.
Когда я наблюдаю за функцией в портале Azure, онаПохоже, что запросы приходят каждые три секунды или около того, хотя с моей стороны нет сетевого трафика после первоначального пакета.
Когда я получаю свои результаты обратно, они поступают в последовательности, точно так жеЯ отправил их, хотя монитор портала Azure показывает, что для запуска некоторых функций требуется 10 секунд, а для запуска других - 3 секунды.
Я использую функции Azure версии 1 с планом обслуживания потребления.
CentralUSPlan (Consumption: 0 Small)
Мой файл host.json пуст ==> {}
Почему это происходит?Существуют ли какие-либо настройки, необходимые для параллельного выполнения функций Azure?
public async Task<List<MyAnalysisObject>> DoMyAnalysisObjectsHttpRequestsAsync(List<MyAnalysisObject> myAnalysisObjectList)
{
List<MyAnalysisObject> evaluatedObjects = new List<MyAnalysisObject>();
using (var client = new HttpClient())
{
var tasks = new List<Task<MyAnalysisObject>>();
foreach (var myAnalysisObject in myAnalysisObjectList)
{
tasks.Add(DoMyAnalysisObjectHttpRequestAsync(client, myAnalysisObject));
}
var evaluatedObjectsArray = await Task.WhenAll(tasks);
evaluatedObjects.AddRange(evaluatedObjectsArray);
}
return evaluatedObjects;
}
public async Task<MyAnalysisObject> DoMyAnalysisObjectHttpRequestAsync(HttpClient client, MyAnalysisObject myAnalysisObject)
{
string requestJson = JsonConvert.SerializeObject(myAnalysisObject);
Console.WriteLine("Doing post-async:" + myAnalysisObject.Identifier);
var response = await client.PostAsync(
"https://myfunctionapp.azurewebsites.net/api/BuildMyAnalysisObject?code=XXX",
new StringContent(requestJson, Encoding.UTF8, "application/json")
);
Console.WriteLine("Finished post-async:" + myAnalysisObject.Identifier);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine("Got result:" + myAnalysisObject.Identifier);
return JsonConvert.DeserializeObject<MyAnalysisObject>(result);
}