Я проверяю, как долговечные функции могут разворачиваться и разворачиваться, и как я могу масштабировать свой код.для этого примера я имитирую много кратковременных, интенсивных операций с процессором.
Кажется, что не все действия завершены, и я не уверен, почему или где искать журнал для сбоев.
Пожалуйстасм. код ниже:
public static class ParallelLoadDurable
{
[FunctionName("ParallelLoadDurable")]
public static async Task<string> RunOrchestrator(
[OrchestrationTrigger] DurableOrchestrationContext context, ILogger log)
{
DateTime StartTimer = DateTime.Now;
int counter = 0;
var parallelTasks = new List<Task<string>>();
var retryOptions = new RetryOptions(
firstRetryInterval: TimeSpan.FromSeconds(5),
maxNumberOfAttempts: 5);
for (int i = 0; i < 1000; i++)
{
counter += 1;
DurablePassModel DPM = new DurablePassModel()
{
LoopNum = counter,
StartedOn = StartTimer
};
Task<string> task = context.CallActivityWithRetryAsync<string>("ParallelLoadDurable_Hello", retryOptions, DPM);
parallelTasks.Add(task);
}
await Task.WhenAll(parallelTasks);
DateTime CompleteTime = DateTime.Now;
TimeSpan TS = CompleteTime.Subtract(StartTimer);
string ret = $"PROCESS COMPLETED: {counter} times for: {TS.TotalMilliseconds} ms.";
log.LogInformation(ret);
return ret;
}
[FunctionName("ParallelLoadDurable_Hello")]
public static string SayHello([ActivityTrigger] DurablePassModel val, ILogger log)
{
log.LogInformation($"Starting child function num {val.LoopNum.ToString()}.");
DateTime StartTimer = DateTime.Now;
var endTime = DateTime.Now.AddSeconds(10);
while (true)
{
if (DateTime.Now >= endTime)
break;
}
DateTime CompleteTime = DateTime.Now;
TimeSpan TS = CompleteTime.Subtract(val.StartedOn);
TimeSpan TSThis = CompleteTime.Subtract(StartTimer);
string ret = $"Ran this for: {TSThis.TotalSeconds}s - LoopNum: {val.LoopNum} - total time: {TS.TotalSeconds}s.";
log.LogInformation(ret);
return ret;
}
[FunctionName("ParallelLoadDurable_HttpStart")]
public static async Task<HttpResponseMessage> HttpStart(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")]HttpRequestMessage req,
[OrchestrationClient]DurableOrchestrationClient starter,
ILogger log)
{
// Function input comes from the request content.
string instanceId = await starter.StartNewAsync("ParallelLoadDurable", null);
log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
return starter.CreateCheckStatusResponse(req, instanceId);
}
}
То, что я получаю почти в каждом случае, составляет около 96% ожидаемых завершенных действий.это из результатов в таблице истории, где EventType = TaskCompleted
Также в таблице «экземпляры» RuntimeStatus просто остается «работающим»
Где я могу найти список сбоев?
Спасибо за любую помощь
Ник