Questão de Engenharia de Software — Frameworks — FGV 2025
Engenharia de Software›Frameworks
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 é
Aadicionar trigger_rule='all_failed' à tarefa B.
Badicionar depends_on_past=True na tarefa A.
Cconfigurar a DAG como catchup=False.
Dencadear as tarefas com trigger_dagrun e ExternalTaskSensor.
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
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.