#azure-functions #breadth-first-search #azure-durable-functions
#azure-функции #широта-первый-поиск #azure-долговечные-функции
Вопрос:
Я пытаюсь узнать о функции, которая использует план потребления (10 минут) для возврата узлов до n уровней:
Ввод:
[ { "ids": [ A ], "depth": 3 }, { "ids": [ B C ], "depth": 1 }
Выходные данные: A, B, C, D, E, F
(поскольку идентификатор A глубины 3 вернет A, B, C, D, E, F. Идентификатор B и C глубины 1 вернет B, C. После удаления дубликатов вывод будет A, B, C, D, E, F)
[FunctionName(nameof(ChildEntitiesReaderFunction))] public async Tasklt;Listlt;PersonEntitygt;gt; GetChildEntities([ActivityTrigger] ChildEntitiesReaderRequest request) { var childEntities = await GetChildEntitiesAsync(request.ParentEntity, request.SyncJob, request.Depth, request.OtherOrgLeaderIds); return childEntities; } public async Tasklt;Listlt;PersonEntitygt;gt; GetChildEntitiesAsync(PersonEntity parentEntity, SyncJob syncJob, int depth, Listlt;stringgt; orgLeadersToExclude) { depth--; if (parentEntity == null) { return await Task.FromResult(new Listlt;PersonEntitygt;()); } var allEntities = new Listlt;PersonEntitygt; { parentEntity }; Listlt;PersonEntitygt; directChildEntities = null; var oneCatalogTableName = await GetOneCatalogTableNameAsync(syncJob.RunId); try { directChildEntities = await _oneCatalogTableService.ExecuteQueryAsync(oneCatalogTableName, $"PartitionKey eq '{parentEntity.PersonnelNumber}'", syncJob.RunId); } catch (Exception ex) { } var taskIndex = 0; var readTasks = new Tasklt;Listlt;PersonEntitygt;gt;[directChildEntities.Count(x =gt; x.Childcount gt; 0)]; foreach (var child in directChildEntities) { if (orgLeadersToExclude.Contains(child.PersonnelNumber)) { continue; } if (child.Childcount gt; 0 amp;amp; depth != 1) { readTasks[taskIndex ] = GetChildEntitiesAsync(child, syncJob, depth, orgLeadersToExclude); } else { allEntities.Add(child); } } var validTasks = readTasks.Where(task =gt; task != null).ToList(); if (validTasks.Count gt; 0) { foreach (var result in await Task.WhenAll(validTasks)) { allEntities.AddRange(result); } } // "Got {allEntities.Count} child entities for {parentEntity.PersonnelNumber}"); return allEntities; }
При запуске этой функции чтение дочерних сущностей занимает gt; 10 минут. Есть ли способ обновить эту логику для более быстрого выполнения?
Комментарии:
1. Вы должны предоставить более четкое и подробное описание проблемы, которую вы пытаетесь решить, и указать текущую производительность. вы не задавали вопроса, просто вставили код.