Функции Azure - долговечные функции, SetCustomStatus не обновляется
Я создал долговременную функцию на основе примеров Microsoft из шаблона "Async HTTP APIs".
В моем потоке кода я хочу обновить SetCustomStatus, не используя await contextReq.CallActivityAsync.
Является ли это возможным? поскольку моя постоянная функция остается в состоянии "Ожидание", а "customStatus" не обновляется.
Некоторый фрагмент кода:
[FunctionName("UpdateItemsWithProgress")]
public static async Task<HttpResponseMessage> HttpStart(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")]HttpRequestMessage req,
[OrchestrationClient]DurableOrchestrationClient starter,
ILogger log)
{
dynamic jsonMessage = await req.Content.ReadAsAsync<object>();
try
{
string contentType = req.Content.Headers?.ContentType?.MediaType;
if (contentType == "application/json")
{
string instanceId = await starter.StartNewAsync("updateTransitItem", jsonMessage);
log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
return starter.CreateCheckStatusResponse(req, instanceId);
} else
{
return starter.CreateCheckStatusResponse(req, null);
}
}
catch (Exception e)
{
return starter.CreateCheckStatusResponse(req, e.Message);
}
}
[FunctionName("updateTransitItem")]
public static async Task<object> RunOrchestrator(
[OrchestrationTrigger] DurableOrchestrationContext contextReq)
{
dynamic dynObj = contextReq.GetInput<object>();
contextReq.SetCustomStatus("Working...");
// doing stuff
contextReq.SetCustomStatus("1");
// doing stuff
contextReq.SetCustomStatus("2");
// doing stuff
return "Success"
}
1 ответ
Ответ на этот вопрос можно найти здесь: https://social.msdn.microsoft.com/Forums/en-US/767d5be5-4ba9-4b53-9838-9e32dfa7bdb3/azure-functions-durable-functions-setcustomstatus-not-updating?forum=AzureFunctions.
Скопировать ответ -
Я не верю, что статус сохраняется до тех пор, пока не будет вызвана активность. Так что, если вы никогда не позвоните, он никогда не будет обновлен.