Pular para o conteúdo principal

Questão de Engenharia de Software — Frameworks — FGV 2025

Engenharia de SoftwareFrameworks
Código
fg107867
Banca
FGV
Órgão
CPRM
Ano
2025
Nível
Superior
Cargo
Analista em Geociências - Geoprocessamento
Um engenheiro de dados deseja criar uma DAG do Airflow que garanta o seguinte comportamento: a tarefa B deve executar apenas se a tarefa A falhar. Essa lógica faz parte de uma estratégia de redundância.A opção que implementa corretamente esse comportamento é
  1. Aadicionar trigger_rule='all_failed' à tarefa B.
  2. Badicionar depends_on_past=True na tarefa A.
  3. Cconfigurar a DAG como catchup=False.
  4. Dencadear as tarefas com trigger_dagrun e ExternalTaskSensor.
  5. Edefinir retry_delay=timedelta(seconds=0) na tarefa A.
Revelar gabarito e comentário

GabaritoA — adicionar trigger_rule='all_failed' à tarefa B.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Apache Airflow: Trigger Rules

Gabarito: letra A. A trigger_rule='all_failed' na tarefa B faz com que ela seja executada apenas se todas as tarefas upstream (no caso, apenas A) tiverem falhado, implementando exatamente o comportamento desejado: B executa se A falhar.

Alternativa

Descrição

Comportamento

Correta?

A

trigger_rule='all_failed' na tarefa B

B executa se todas as upstreams (A) falharem

✅ Sim

B

depends_on_past=True na tarefa A

A só executa se a execução anterior foi bem-sucedida

❌ Não

C

catchup=False na DAG

Impede execução retroativa de intervalos passados

❌ Não

D

trigger_dagrun + ExternalTaskSensor

Coordena DAGs diferentes (cross-DAG)

❌ Não

E

retry_delay=timedelta(seconds=0) na tarefa A

Controla intervalo entre retries de A

❌ Não

1all_success (padrão)
Executa se TODAS upstream OK
2all_failed
Executa se TODAS upstream falharam
3all_done
Executa independente do resultado
4one_failed
Executa se PELO MENOS UMA falhou
5one_success
Executa se PELO MENOS UMA OK
6none_failed
Executa se NENHUMA falhou
Trigger rules (Airflow)
LEVELsoulevel.com.br
Trigger rules (Airflow): all_success (padrão) (Executa se TODAS upstream OK); all_failed (Executa se TODAS upstream falharam); all_done (Executa independente do resultado); one_failed (Executa se PELO MENOS UMA falhou); one_success (Executa se PELO MENOS UMA OK); none_failed (Executa se NENHUMA falhou)

Alternativa A — ✅ Correta ⟵ GABARITO

A documentação do Apache Airflow define que a trigger rule all_failed determina que a tarefa será executada se todas as tarefas antecessoras diretas estiverem no estado failed. Como a DAG tem apenas A como antecessora de B, isso satisfaz a condição "B executa se A falhar".

Alternativa B — ❌ Incorreta

depends_on_past=True na tarefa A significa que A só executará se a execução anterior (no mesmo período de agendamento) tiver sido bem-sucedida. Não há relação com a execução de B após falha de A.

Alternativa C — ❌ Incorreta

catchup=False é uma configuração da DAG que impede a execução retroativa de intervalos de agendamento passados. Não interfere na lógica de dependência entre tarefas.

Alternativa D — ❌ Incorreta

trigger_dagrun e ExternalTaskSensor são mecanismos para coordenar DAGs diferentes (cross-DAG), não para definir dependências internas entre tarefas de uma mesma DAG.

Alternativa E — ❌ Incorreta

retry_delay=timedelta(seconds=0) controla o intervalo entre tentativas de retry de uma tarefa, não a condição para execução de outra tarefa.

Link permanente: /questoes/fg107867