我想按需处理数百万条记录,这大约需要2-3个小时来处理。我要去无服务器,这就是为什么尝试持久功能(第一次)。我想检查一下我可以运行持久功能多长时间,所以我创建了3个功能
我的DurableFunction从最近5天开始在Application Insights中运行并发出日志,根据我的代码,还需要15天才能完成。
我想知道如何手动停止Orchestrator功能?
我可以在ApplicationInsights请求表中看到成千上万次执行单项的记录,是否有任何方法可以检查后端运行了多少DurableFunction?一次执行需要多少时间?
我可以在“ DurableFunctionHubInstance”表中看到一些有关协调器功能的信息,但由于MS建议不要依赖该表。
答案 0 :(得分:2)
由于耐用功能做了很多checkpointing and replays the orchestration,因此正常记录可能并不总是很有见地。
有几种查询业务流程状态的方法。其中之一是通过Azure Functions Core tools进行的,就像乔治·陈提到的那样。
查询状态的另一种方法是直接使用持久功能的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}
docs中的更多信息。
HTTP API还具有清除业务流程的方法。 single one by ID或multiple by datetime/status。
DELETE <rooturl>/runtime/webhooks/durabletask/instances/{instanceId}
?taskHub={taskHub}
&connection={connection}
&code={systemKey}
最后,您还可以使用C#中的DurableOrchestrationClient
API管理实例。这是GitHub上的示例:HttpGetStatusForMany.cs
我有written和vlogged关于使用DurableOrchestrationClient
API的信息,以防您想了解更多有关如何在C#中使用它的信息。
小的添加:可以向业务流程添加custom status object,以便您可以添加有关业务流程进度的丰富信息。
查询业务流程实例的状态时,您将返回一个DurableOrchestrationStatus
对象。它包含两个属性:
我想您可以减去这些并获得合理的时间花费。
答案 1 :(得分:1)
您可以使用Azure Functions Core Tools管理“持久功能”编排实例。
func durable terminate --id 0ab8c55a66644d68a3a8b220b12d209c --reason "It was time to be done."
Query instances with filters:您可以添加参数(运行时状态)来过滤正在运行的实例。
func durable get-instances --created-after 2018-03-10T13:57:31Z --created-before 2018-03-10T23:59Z --top 15
至于功能花费的时间,似乎它不支持。类似的参数是get-history
。