Defina políticas de retenção para purga automática no Durable Task Scheduler

Para evitar atingir o limite de memória de uma unidade de capacidade (), recomendamos a purga periódica dos dados do histórico de orquestração. O Durable Task Scheduler oferece uma funcionalidade leve e configurável de autopurga que o ajuda a gerir a limpeza dos dados de orquestração sem intervenção manual.

Configuração Valor predefinido
Autopurge Ativado(a)
Período de retenção predefinido 30 dias
Período de retenção máximo 90 dias
Aplica-se a Todos os hubs de tarefas no agendador
Status elegíveis Completed, Failed, Canceled, Terminated

A limpeza automática opera de forma assíncrona em segundo plano, otimizada para minimizar o uso de recursos do sistema e evitar interferências com outras operações de tarefas duráveis. Embora o autopurge não siga uma programação estrita, a sua taxa de limpeza normalmente coincide com a frequência de agendamento da orquestração.

Como funciona

O Autopurge está ativado por defeito com uma política de 30 dias, mas pode ser personalizado. Pode modificá-lo definindo políticas de retenção que especifiquem por quanto tempo manter os dados de orquestração para certos status. A funcionalidade de purga automática remove dados de orquestração que estão em estado terminal. Um estado terminal significa que a orquestração atingiu um estado final e já não agenda tarefas, processa eventos ou gera itens de trabalho. Os estados dos terminais incluem:

  • Completed
  • Failed
  • Canceled
  • Terminated

As instâncias de orquestração qualificadas para limpeza automática correspondem àquelas direcionadas pela API Durable SDK PurgeInstancesAsync.

A limpeza automática ignora dados de orquestração associados a estados não-terminais. Os estados não terminais indicam que a instância de orquestração está em execução ativa, pausada, ou num estado onde pode retomar no futuro (à espera de eventos externos ou temporizadores). Os estatutos não terminais incluem:

  • Pending
  • Running
  • Suspended
  • Continued_As_New

Observação

As orquestrações que usam ContinueAsNew não são consideradas terminais. ContinueAsNew reinicia a orquestração com um novo histórico de execução, preservando o ID da instância, por isso estas instâncias não são eliminadas até atingirem um verdadeiro estado terminal.

Uma vez habilitado, o autopurge exclui periodicamente os dados de orquestração anteriores ao período de retenção definido. O autopurge só remove dados para orquestrações em estados de terminal.

Observação

As políticas de retenção definidas são aplicadas a todos os hubs de tarefas em um agendador.

Configurar políticas de retenção

Intervalo de valor da apólice

Os valores de retenção são especificados em dias e podem variar de 0 (purgar o mais rapidamente possível) até 90 dias. Por padrão, a retenção do autopurge é definida como 30 dias.

O período de retenção começa quando a orquestração entra num estado terminal, não quando foi criada. Por exemplo, se definires um valor de retenção de 1 dia e uma orquestração demorar 10 dias a terminar, o autopurge apaga-o 1 dia depois de terminar.

Incumprimento e tipos específicos de apólices

Ao configurar uma política de retenção de limpeza automática, pode definir uma política específica ou padrão.

  • A política padrão limpa os dados de orquestração, independentemente do orchestrationState. A política a seguir limpa os dados de orquestração de todos os status cobertos pelo recurso após 2 dias:

    {
      "retentionPeriodInDays": 2
    }
    
  • A política específica define a limpeza de dados de orquestração para específico orchestrationState. A política a seguir diz ao Agendador de Tarefas Duráveis para manter os dados de orquestração concluídos por 1 dia, após o qual esses dados são limpos.

    {
      "retentionPeriodInDays": 1,
      "orchestrationState": "Completed"
    }
    

Adicione políticas específicas para substituir a política padrão que é aplicada a orquestrações. No exemplo a seguir, a segunda e terceira políticas substituem a política padrão ("retentionPeriodInDays": 1).

  • Os dados associados às completed orquestrações são eliminados assim que possível.

  • Os dados associados a failed orquestrações são eliminados após 60 dias.

    [
      {
        "retentionPeriodInDays": 1
      },
      {
        "retentionPeriodInDays": 0,
        "orchestrationState": "Completed"
      },
      {
        "retentionPeriodInDays": 60,
        "orchestrationState": "Failed"
      }
    ]
    

Como nenhuma política específica é definida para canceled ou terminated orquestrações, a política padrão ainda se aplica a eles, eliminando os seus dados após 1 dia.

Para obter mais informações, consulte a especificação de referência da API para políticas de retenção do Agendador de Tarefas Duráveis.

Ativar limpeza automática

Você pode definir políticas de retenção usando:

  • Interface de Linha de Comando de Tarefas Duráveis
  • Azure Resource Manager (ARM)
  • Bíceps

Verifique se você tem a versão mais recente da extensão Durable Task CLI.

az extension add --name durabletask
az extension update --name durabletask

Crie ou atualize a política de retenção executando o seguinte comando.

az durabletask retention-policy create --scheduler-name SCHEDULER_NAME --resource-group RESOURCE_GROUP --default-days 1 --completed-days 0 --failed-days 60

As propriedades a seguir especificam a duração da retenção para dados de orquestração de status diferentes.

Propriedade Descrição
--canceled-days ou -x O número de dias para reter orquestrações canceladas.
--completed-days ou -c O número de dias para manter orquestrações concluídas.
--default-days ou -d O número de dias para reter orquestrações.
--failed-days ou -f O número de dias para reter orquestrações falhadas.
--terminated-days ou -t O número de dias para reter orquestrações que foram terminadas.

Exemplo de resposta

Se a criação for bem-sucedida, você receberá a seguinte resposta.

{
  "id": "/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME/retentionPolicies/default",
  "name": "default",
  "properties": {
    "provisioningState": "Succeeded",
    "retentionPolicies": [
      {
        "retentionPeriodInDays": 1
      },
      {
        "orchestrationState": "Completed",
        "retentionPeriodInDays": 0
      },
      {
        "orchestrationState": "Failed",
        "retentionPeriodInDays": 60
      }
    ]
  },
  "resourceGroup": "RESOURCE_GROUP",
  "systemData": {
    "createdAt": "2025-04-23T23:41:17.3165122Z",
    "createdBy": "someone@microsoft.com",
    "createdByType": "User",
    "lastModifiedAt": "2025-04-23T23:41:17.3165122Z",
    "lastModifiedBy": "someone@microsoft.com",
    "lastModifiedByType": "User"
  },
  "type": "microsoft.durabletask/schedulers/retentionpolicies"
}

Sugestão

Saiba mais sobre o comando política de retenção por meio da referência da CLI.

Consulte a política atual

Recuperar a política de retenção atual para um agendador:

az durabletask retention-policy show --scheduler-name SCHEDULER_NAME --resource-group RESOURCE_GROUP

Desativar limpeza automática

Exclua as políticas de retenção usando o comando a seguir. O Durable Task Scheduler para de limpar os dados de orquestração dentro de 5 a 10 minutos.

az durabletask retention-policy delete --scheduler-name SCHEDULER_NAME --resource-group RESOURCE_GROUP