Configuración de directivas de retención de purga automática para el programador de tareas duraderas

Para evitar alcanzar el límite de memoria de una unidad de capacidad (CU), se recomienda purgar periódicamente los datos del historial de orquestación. Durable Task Scheduler ofrece una característica ligera y configurable de depuración automática que le ayuda a administrar la limpieza de datos de orquestación sin intervención manual.

Configuración Valor predeterminado
Purga automática Habilitado
Período de retención predeterminado 30 días
Período de retención máximo 90 días
Se aplica a Todos los centros de tareas del programador
Estados aptos Completed, Failed, , Canceled, Terminated

La depuración automática funciona de forma asincrónica en segundo plano, optimizada para minimizar el uso de recursos del sistema y evitar la interferencia con otras operaciones de Durable Task. Aunque la depuración automática no cumple una programación estricta, su tasa de limpieza se alinea generalmente con la velocidad de programación de orquestación.

Cómo funciona

La depuración automática está habilitada de forma predeterminada con una directiva de 30 días, pero se puede personalizar. Puede modificarla definiendo directivas de retención que especifican cuánto tiempo se conservan los datos de orquestación para determinados estados. La función de autopurga elimina los datos de orquestación que se encuentran en estados terminales. Un estado final significa que la orquestación ha alcanzado un estado final y ya no programará tareas, procesará eventos ni generará elementos de trabajo. Los estados de terminal incluyen:

  • Completed
  • Failed
  • Canceled
  • Terminated

Las instancias de orquestación aptas para la purga automática coinciden con las destinadas a la API PurgeInstancesAsync del SDK de Durable.

La depuración automática omite los datos de orquestación asociados a los estados que no son terminales. Los estados no terminales indican que la instancia de orquestación se está ejecutando, pausando o en un estado en el que puede reanudarse en el futuro (esperando eventos externos o temporizadores). Los estados no terminales incluyen:

  • Pending
  • Running
  • Suspended
  • Continued_As_New

Nota:

Las orquestaciones que usan ContinueAsNew no se consideran terminales. ContinueAsNew reinicia la orquestación con un nuevo historial de ejecución mientras conserva el identificador de instancia, por lo que estas instancias no se purgan hasta que llegan a un estado de terminal verdadero.

Una vez habilitada, la depuración automática elimina periódicamente los datos de orquestación anteriores al período de retención establecido. La autopurga solo elimina los datos de las orquestaciones en estados terminales.

Nota:

Las directivas de retención que defina se aplican a todos los centros de tareas de un planificador.

Configuración de las directivas de retención

Intervalo de valores de política

Los valores de retención se especifican en días y pueden oscilar entre 0 (purgar lo antes posible) a 90 días. De manera predeterminada, la retención de la depuración automática se establece en 30 días.

El período de retención se inicia cuando la orquestación entra en un estado terminal, no cuando se creó. Por ejemplo, si establece un valor de retención de 1 día y una orquestación tarda 10 días en finalizar, la depuración automática la elimina 1 día después de que finalice.

Tipos de directiva predeterminados y específicos

Al configurar una directiva de retención de purga automática, puede establecer una directiva específica o predeterminada.

  • La directiva predeterminada purga los datos de orquestación independientemente de orchestrationState. La directiva siguiente purga los datos de orquestación de todos los estados cubiertos por la característica después de 2 días:

    {
      "retentionPeriodInDays": 2
    }
    
  • La directiva específica define la purga de datos de orquestación para un determinado orchestrationState. La siguiente directiva indica al Programador de Durable Task que mantenga los datos de orquestación completados durante 1 día, después de lo cual se purgan estos datos.

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

Agregue directivas específicas para invalidar la directiva predeterminada aplicada a las orquestaciones. En el ejemplo siguiente, las directivas segunda y tercera invalidan la directiva predeterminada ("retentionPeriodInDays": 1).

  • Los datos asociados a orquestaciones completed se eliminan lo antes posible.

  • Los datos asociados a orquestaciones failed se purgan después de 60 días.

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

Dado que no se establece ninguna política específica para las orquestaciones canceled o terminated, la política predeterminada sigue aplicándose, eliminando sus datos después de 1 día.

Para obtener más información, consulte la especificación de referencia de API para las políticas de retención del planificador de tareas duraderas.

Habilitación de la depuración automática

Puede definir directivas de retención mediante:

  • CLI de Tareas duraderas
  • Azure Resource Manager (ARM)
  • Bíceps

Asegúrese de que tiene la versión más reciente de la extensión de la CLI de Durable Task.

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

Cree o actualice la directiva de retención mediante la ejecución del comando siguiente.

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

Las siguientes propiedades especifican la duración de retención para los datos de orquestación de diferentes estados.

Propiedad Descripción
--canceled-days o -x Número de días que se conservan las orquestaciones canceladas.
--completed-days o -c Número de días que se conservan las orquestaciones completadas.
--default-days o -d Número de días que se conservan las orquestaciones.
--failed-days o -f Número de días que se conservan las orquestaciones con errores.
--terminated-days o -t Número de días que se conservan las orquestaciones terminadas.

Respuesta de ejemplo

Si la creación se realiza correctamente, recibirá la siguiente respuesta.

{
  "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"
}

Sugerencia

Obtenga más información sobre el comando de directiva de retención a través de la referencia de la CLI.

Visualización de la directiva actual

Recupere la directiva de retención actual para un programador:

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

Deshabilitación de la depuración automática

Elimine las directivas de retención mediante el comando siguiente. Durable Task Scheduler deja de limpiar los datos de orquestación dentro de 5 a 10 minutos.

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