簡體   English   中英

在調試 Azure 持久功能時清除歷史記錄

[英]Clearing history while debugging azure durable functions

持久化函數在存儲中保持狀態,這是它們工作的原因,但在調試和開發時非常麻煩。 我有大量未完成的運行,當我啟動該過程時系統會嘗試再次運行。 一些運行具有相同的錯誤數據,這會導致異常,而其他運行則由於某些事情沒有按預期工作而提前終止。

在調試中啟動我的應用程序(針對我的本地存儲帳戶運行)時,我不想運行所有舊案例。 如何自動清除所有數據,以便僅觸發新功能?

可以使用Azure 核心工具清除業務流程實例狀態。

首先,您需要確保為您的特定 Azure Function 版本安裝了 Azure Core Tools。 您可以使用 NPM 包管理器執行此操作。 (請注意,這是針對 Azure Functions 版本 - V3。)

npm install -g azure-functions-core-tools@3

然后在 Azure Functions 項目的根目錄中打開命令提示符。 Azure 核心工具需要項目中的 host.json 文件來識別業務流程實例。

您可以使用以下內容查看所有可用操作:

func durable 

然后,您可以使用以下命令清除實例歷史記錄:

func durable purge-history

現在有了這個 VsCode 擴展,它現在還具有“清除持久功能歷史記錄”功能。 在您的命令面板中輸入“清除持久功能歷史記錄”——然后就可以了。 如果您不使用 VsCode,則可以將同一工具作為獨立服務使用,您可以在本地運行或部署到 Azure。

您可以使用以下方法之一調用PurgeInstanceHistoryAsync方法:

  1. 編排實例 ID
[FunctionName("PurgeInstanceHistory")]
public static Task Run(
    [DurableClient] IDurableOrchestrationClient client,
    [ManualTrigger] string instanceId)
{
    return client.PurgeInstanceHistoryAsync(instanceId);
}
  1. 時間間隔
[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
        });
}

上述代碼片段的參考: https ://docs.microsoft.com/en-gb/azure/azure-functions/durable/durable-functions-instance-management#purge-instance-history

對於其他想知道到底如何做到這一點的人。

  1. 安裝 Microsoft Azure 存儲資源管理器
  2. 添加到 Azure 存儲的連接,但選擇Local storage emulator 項目清單

4. 使用默認值/單擊下一步。

此時,單擊資源管理器中的本地和附加。 單擊(仿真器默認端口)(鍵)-> 表。 刪除任務擁抱歷史表,然后重新啟動您的應用程序。

從這一點來看,找出一種以編程方式完成它的方法只是開發時間的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM