由于 Durable Functions 会执行大量检查点并重放编排,因此正常的日志记录可能并不总是很有洞察力。
获取状态
有几种方法可以查询编排的状态。其中之一是通过George Chen 提到的Azure Functions Core 工具。
另一种查询状态的方法是直接使用 Durable Functions 的 HTTP API:
GET <rooturl>/runtime/webhooks/durableTask/instances?
taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
&showInput=[true|false]
&top={integer}
文档中的更多信息。
HTTP API 还具有清除编排的方法。一个按 ID或多个按 datetime/status。
DELETE <rooturl>/runtime/webhooks/durabletask/instances/{instanceId}
?taskHub={taskHub}
&connection={connection}
&code={systemKey}
最后,您还可以使用DurableOrchestrationClient
C# 中的 API 管理您的实例。这是 GitHub 上的示例:HttpGetStatusForMany.cs
如果您想了解更多关于如何在 C# 中使用它的信息,我已经写了关于使用 API 的视频并写了博客。DurableOrchestrationClient
自定义状态
小补充:可以向编排添加自定义状态对象,以便您可以添加有关编排进度的丰富信息。
获取持续时间
当您查询编排实例的状态时,您会返回一个DurableOrchestrationStatus
对象。这包含两个属性:
我猜你可以减去这些并得到一个合理的指示它所花费的时间。