如何检查运行状态并停止持久功能

时间:2019-05-04 12:31:34

标签: azure azure-durable-functions

我想按需处理数百万条记录,这大约需要2-3个小时来处理。我要去无服务器,这就是为什么尝试持久功能(第一次)。我想检查一下我可以运行持久功能多长时间,所以我创建了3个功能

  1. Http函数启动Orchestrator函数
  2. 协调器功能 enter image description here
  3. 活动功能

enter image description here

我的DurableFunction从最近5天开始在Application Insights中运行并发出日志,根据我的代码,还需要15天才能完成。

我想知道如何手动停止Orchestrator功能?

我可以在ApplicationInsights请求表中看到成千上万次执行单项的记录,是否有任何方法可以检查后端运行了多少DurableFunction?一次执行需要多少时间?

我可以在“ DurableFunctionHubInstance”表中看到一些有关协调器功能的信息,但由于MS建议不要依赖该表。

2 个答案:

答案 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 IDmultiple by datetime/status

DELETE <rooturl>/runtime/webhooks/durabletask/instances/{instanceId}
    ?taskHub={taskHub}
    &connection={connection}
    &code={systemKey}

最后,您还可以使用C#中的DurableOrchestrationClient API管理实例。这是GitHub上的示例:HttpGetStatusForMany.cs

我有writtenvlogged关于使用DurableOrchestrationClient API的信息,以防您想了解更多有关如何在C#中使用它的信息。

自定义状态

小的添加:可以向业务流程添加custom status object,以便您可以添加有关业务流程进度的丰富信息。

获取持续时间

查询业务流程实例的状态时,您将返回一个DurableOrchestrationStatus对象。它包含两个属性:

  • CreatedTime
  • LastUpdatedTime

我想您可以减去这些并获得合理的时间花费。

答案 1 :(得分:1)

您可以使用Azure Functions Core Tools管理“持久功能”编排实例。

Terminate instances

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