Retentativas de atividade no Microsoft Fabric Data Factory

A maioria das atividades de pipeline no Data Factory oferece suporte a repetições automáticas. Quando uma atividade falha devido a um erro transitório (uma API com limitação de taxa, uma breve indisponibilidade do serviço ou uma dependência instável), você pode configurá-la para tentar novamente automaticamente um número definido de vezes antes de marcar a atividade como com falha.

Você também pode controlar quanto tempo a atividade espera entre as tentativas, definir o número de tentativas e esperar individualmente para cada atividade, para ajustar o comportamento das tentativas com precisão em todo o seu fluxo de trabalho.

Configurar a repetição em uma atividade

Para configurar o comportamento de repetição para uma atividade:

  1. Selecione a atividade na tela do pipeline.

  2. Na guia Geral do painel propriedades, selecione a caixa de seleção Habilitar novas tentativas para ativar a funcionalidade de repetição.

    Captura de tela mostrando as configurações de repetição na aba Geral do painel de propriedades de uma atividade, incluindo Ativar repetições destacada, Contagem de repetições, Condições de repetição e Intervalo de repetição.

  3. Defina o campo Repetir para o número de tentativas de repetição. Insira um valor entre 1 e 1000. O valor padrão é 1.

  4. Em tipo de intervalo de tentativa, selecione Atraso Fixo ou Crescente para controlar como o tempo de espera entre as tentativas é calculado. Depois, defina os campos de intervalo para o tipo escolhido. Consulte intervalos de nova tentativa para mais detalhes.

    Captura de tela mostrando a configuração do intervalo de nova tentativa definida como o tipo de intervalo fixo na guia Geral do painel de propriedades de uma atividade.

    Captura de tela mostrando a configuração do intervalo de nova tentativa definida como o tipo de intervalo de atraso crescente na guia Geral do painel de propriedades de uma atividade.

  5. Opcionalmente, configure as condições de repetição (versão prévia) para controlar quando novas tentativas ocorrem com base em critérios de erro específicos.

    Captura de tela com as configurações das condições de nova tentativa na aba Geral do painel de propriedades de uma atividade.

Intervalos de tentativa

O intervalo entre tentativas define por quanto tempo uma atividade espera entre as tentativas. Use Fixed para falhas breves e previsíveis. Use Atraso crescente para interrupções mais longas. Implementa um recuo exponencial, onde o tempo de espera aumenta a cada tentativa, dando aos serviços upstream progressivamente mais tempo para se recuperar.

A configuração Tipo de intervalo de repetição controla qual abordagem usar.

Tipo Behavior
Fixo (padrão) Espera o mesmo número de segundos entre cada tentativa.
Atraso Crescente Utiliza retardo exponencial: cada retentativa aguarda por um intervalo aleatório dentro de uma faixa que cresce exponencialmente, até um máximo configurável.

Correção

Quando você seleciona Fixo, a atividade espera o mesmo número de segundos entre cada nova tentativa. Use esse tipo quando falhas são breves e previsíveis.

Defina Intervalo de repetição (seg) com o número de segundos de espera. O padrão é 30 segundos.

Captura de tela que mostra a configuração do intervalo de nova tentativa definida para o tipo de intervalo fixo na guia Geral do painel de propriedades de uma atividade.

Atraso crescente

Quando você seleciona Atraso crescente, o tempo de espera aumenta exponencialmente a cada tentativa, um padrão conhecido como recuo exponencial. Esse padrão dá aos serviços upstream progressivamente mais tempo para se recuperar, reduz a carga repetida em sistemas em dificuldades e permite que os dutos se recuperem sozinhos de interrupções mais longas sem intervenção manual.

O mecanismo de retentativa seleciona um intervalo aleatório dentro de uma faixa em expansão exponencial antes de cada tentativa:

Retry Alcance mínimo Alcance máximo
1 max(0, intervalo mínimo) min(intervalo, intervalo máximo)
2 max(intervalo, intervalo mínimo) min(2 × intervalo, intervalo máximo)
3 max( intervalo de 2 ×, intervalo mínimo) min(4 × intervalo, intervalo máximo)
4 máx( intervalo de 4 ×, intervalo mínimo) min( intervalo × 8, intervalo máximo)

O intervalo dobra a cada tentativa até que o limite superior atinja o intervalo máximo entre tentativas, depois disso, todas as tentativas restantes aguardam esse intervalo máximo. A seleção aleatória dentro de cada intervalo reduz a chance de que novas tentativas simultâneas do pipeline entrem em conflito no mesmo sistema de origem no mesmo instante.

Dois campos estão disponíveis quando Atraso crescente é selecionado:

Campo Description Default
Intervalo de tentativa (seg) O intervalo inicial. Define a base do intervalo de recuo. 30 segundos
Intervalo máximo de tentativa (seg) O limite superior do intervalo de espera. Retentativas nunca esperam mais do que esse valor. 3600 segundos

Captura de tela mostrando a configuração do intervalo de nova tentativa configurada como o tipo de intervalo de atraso incremental na aba Geral do painel de propriedades de uma atividade.

Note

Campos de intervalo de tentativa não suportam expressões dinâmicas. Os valores devem ser inteiros estáticos.

Configurar condições de nova tentativa (prévia)

Por padrão, uma atividade é repetida em caso de qualquer falha. Use condições de nova tentativa para especificar quais erros disparam uma nova tentativa. Essa abordagem ajuda a evitar desperdiçar tentativas em erros que não são resolvidos, como falhas de autenticação.

Para adicionar uma condição de repetição:

  1. Na seção Condições de repetição (versão prévia), selecione o + botão para adicionar uma nova linha de condição.
  2. Escolha um campo para avaliar:
    • Mensagem de erro: o conteúdo do texto da mensagem de erro.
    • Tipo de falha: A categoria de falha, como erro do usuário ou erro do sistema.
    • Código de erro: O código de erro específico retornado, como 429 para limitação de taxa.
  3. Selecione um Operador para definir o tipo de correspondência, como Contém.
  4. Insira um valor com o qual corresponder.
  5. Use a coluna And/Or para combinar várias condições. Selecione E para exigir que todas as condições sejam atendidas, ou Ou para tentar novamente quando qualquer condição for atendida.

Por exemplo, para tentar novamente somente em erros de limite de taxa, adicione uma condição com Field definido como Error code, Operator definido como Contains e Value definido como 429.

Importante

O intervalo de repetição é executado antes que a condição seja avaliada. Por exemplo, se você definir um intervalo de repetição de 1 hora e a condição de repetição não for atendida, o pipeline ainda aguardará a hora inteira antes de prosseguir para a próxima atividade ou encerrar a execução do pipeline.

Dica

Quando você não especifica as condições de retentativa, a atividade é repetida em caso de qualquer falha. Adicione condições para ser mais seletivo sobre quais erros disparam novas tentativas.

Limitações de repetição conhecidas

  • Suporte à atividade: há suporte para novas tentativas condicionais para tipos de atividade específicos, incluindo atividades de cópia de dados, notebook, fluxo de dados e procedimento armazenado.
  • Propriedades de erro: as condições de repetição podem corresponder ao código de erro, à mensagem de erro e ao tipo de falha. Nem todos os campos de erro específicos do conector estão disponíveis para correspondência.