use*_*502 6 azure-functions azure-durable-functions
持久函数在存储中保持一个状态,这就是使它们工作的原因,但是在调试和开发时非常麻烦。我有大量未完成的运行,并且系统在我启动该过程时尝试再次运行。一些运行具有相同的错误数据,这会导致异常,而另一些运行由于某些事情没有按预期工作而提前终止。
我不想在调试中启动我的应用程序时运行所有旧案例(针对我的本地存储帐户运行)。如何自动清除所有数据,以便仅触发新功能?
小智 11
您可以使用Azure Core Tools清除编排实例状态。
首先,您需要确保为您的特定 Azure Function 版本安装了 Azure Core Tools。您可以使用 NPM 包管理器来执行此操作。(请注意,这适用于 Azure Functions 版本 - V3。)
npm install -g azure-functions-core-tools@3
Run Code Online (Sandbox Code Playgroud)
然后在 Azure Functions 项目的根目录中打开命令提示符。Azure Core Tools 需要项目中的 host.json 文件来识别您的编排实例。
您可以使用以下命令查看所有可用的操作:
func durable
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用以下命令清除实例历史记录:
func durable purge-history
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法之一调用PurgeInstanceHistoryAsync方法:
[FunctionName("PurgeInstanceHistory")]
public static Task Run(
[DurableClient] IDurableOrchestrationClient client,
[ManualTrigger] string instanceId)
{
return client.PurgeInstanceHistoryAsync(instanceId);
}
Run Code Online (Sandbox Code Playgroud)
[FunctionName("PurgeInstanceHistory")]
public static Task Run(
[DurableClient] IDurableOrchestrationClient client,
[TimerTrigger("0 0 12 * * *")]TimerInfo myTimer)
{
return client.PurgeInstanceHistoryAsync(
DateTime.MinValue,
DateTime.UtcNow.AddDays(-30),
new List<OrchestrationStatus>
{
OrchestrationStatus.Completed
});
}
Run Code Online (Sandbox Code Playgroud)
对于其他人来说,他们想知道到底如何做到这一点。
4. 使用默认值/单击下一步。
此时,在资源管理器中单击本地和附加。单击(模拟器默认端口)(键)-> 表。删除任务拥抱历史表,然后重新启动您的应用程序。
从这一点来看,找到一种以编程方式完成此操作的方法只是开发时间的问题。