Cloud Composer 1 | Cloud Composer 2
Nesta página, descrevemos maneiras diferentes de acionar DAGs em ambientes do Cloud Composer.
O Airflow fornece as seguintes maneiras de acionar um DAG:
Acionar com base em uma programação. Ao criar um DAG, você especifica uma programação para ele. O Airflow aciona o DAG automaticamente com base nos parâmetros de programação especificados.
Acionar manualmente. É possível acionar um DAG manualmente a partir da IU do Airflow ou executando um comando da CLI do Airflow em
gcloud
.Acionamento em resposta a eventos. A maneira padrão de acionar um DAG em resposta a eventos é usando um sensor.
Outras maneiras de acionar DAGs:
Acionar de maneira programática. É possível acionar um DAG usando a API REST do Airflow. Por exemplo, em um script em Python.
Acionar de maneira programática em resposta a eventos. É possível acionar DAGs em resposta a eventos usando o Cloud Functions e a API REST do Airflow.
Acionamento de um DAG em uma programação
Para acionar um DAG em uma programação:
- Especifique os parâmetros
start_date
eschedule_interval
no arquivo DAG, conforme descrito posteriormente nesta seção. - Faça o upload do arquivo DAGpara o ambiente.
Especificar os parâmetros de programação
Ao definir um DAG, especifique a frequência com que você quer
executá-lo no parâmetro schedule_interval
. No parâmetro start_date
, especifique quando
você quer que o Airflow comece a programar o DAG. As tarefas no DAG podem ter
datas de início individuais. Também é possível especificar uma única data de início para todas as tarefas.
Com base na data de início mínima das tarefas no DAG e no intervalo da
programação, o Airflow programa as execuções de DAGs.
A programação funciona da seguinte maneira. Depois que o start_date
é aprovado, o Airflow
aguarda ocorrência seguinte de schedule_interval
. Em seguida, ele programa
a primeira execução do DAG para acontecer no final desse intervalo. Por exemplo,
se um DAG estiver programado para ser executado a cada hora (schedule_interval
equivale a uma hora) e
a data de início for às 12h de hoje, a primeira execução do DAG ocorrerá às 13h de hoje.
O exemplo a seguir mostra um DAG que é executado a cada hora a partir das 15h de 5 de abril de 2021. Com os parâmetros usados no exemplo, o Airflow programa a primeira execução do DAG para acontecer às 16h do dia 5 de abril de 2021.
from datetime import datetime
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
with DAG(
dag_id='example_dag_schedule',
# At 15:00 on 5 April, 2021
start_date=datetime(2021, 4, 5, 15, 0),
# At minute 0 of every hour
schedule_interval='0 * * * *') as dag:
# Output the current date and time
t1 = BashOperator(
task_id='date',
bash_command='date',
dag=dag)
t1
Para mais informações sobre os parâmetros de programação, consulte Execuções do DAG na documentação do Airflow.
Mais exemplos de parâmetros de programação
Veja a seguir exemplos de como funciona a programação com diferentes combinações de parâmetros:
- Se
start_date
fordatetime(2021, 4, 4, 16, 25)
eschedule_interval
for30 16 * * *
, a primeira execução do DAG acontecerá às 16h30 de 5 de abril de 2021. - Se
start_date
fordatetime(2021, 4, 4, 16, 35)
eschedule_interval
for30 16 * * *
, a primeira execução do DAG acontecerá às 16h30 em 6 de abril de 2021. Como a data de início é após o intervalo da programação em 4 de abril de 2021, a execução do DAG não acontecerá no dia 5 de abril de 2021. Em vez disso, o intervalo da programação termina às 16h35 do dia 5 de abril de 2021. Portanto, a próxima execução do DAG é programada para às 16h30 do dia seguinte. - Se
start_date
fordatetime(2021, 4, 4)
eschedule_interval
for@daily
, a primeira execução do DAG será programada para às 00h do dia 5 de abril de 2021. - Se
start_date
fordatetime(2021, 4, 4, 16, 30)
eschedule_interval
for0 * * * *
, a primeira execução do DAG será programada para às 18h do dia 4 de abril de 2021. Após a data e hora especificadas, o Airflow programa uma execução do DAG para ocorrer no minuto 0 de cada hora. O momento mais próximo em que isso acontece é 17h. Nesse momento, o Airflow programa uma execução do DAG para acontecer no final do intervalo da programação, ou seja, às 18h.
Acionar um DAG manualmente
Quando você aciona um DAG manualmente, o Airflow realizar uma execução do DAG. Por exemplo, se você tiver um DAG que já esteja em execução em uma programação e acionar esse DAG manualmente, o Airflow executará o DAG uma vez, independentemente da programação real especificada para ele.
Console
A interface do DAG é compatível com o Cloud Composer 1.17.8 e versões posteriores.
Para acionar um DAG no console do Google Cloud:
No console do Google Cloud, acesse a página Ambientes.
Selecione um ambiente para ver os detalhes.
Na página Detalhes do ambiente, acesse a guia DAGs.
Clique no nome de um DAG.
Na página Detalhes do DAG, clique em Acionar DAG. Uma nova execução de DAG é criada.
IU do Airflow
Para acionar um DAG a partir da interface da Web do Airflow:
- No console do Google Cloud, acesse a página Ambientes.
Na coluna Servidor da Web do Airflow, siga o link Airflow do ambiente.
Faça login com a Conta do Google que tem as permissões apropriadas.
Na interface da Web do Airflow, na página DAGs, na coluna Links do DAG, clique no botão Acionar DAG.
(Opcional) Especifique a configuração de execução do DAG.
Clique em Gatilho.
gcloud
No Airflow 1.10.12 ou anterior, execute o comando trigger_dag
da CLI do Airflow:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
trigger_dag -- DAG_ID
No Airflow 1.10.14 ou posterior, incluindo o Airflow 2, execute o comando dags trigger
da CLI do Airflow:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
dags trigger -- DAG_ID
Substitua:
ENVIRONMENT_NAME
pelo nome do ambienteLOCATION
pela região em que o ambiente está localizado;DAG_ID
pelo nome do DAG.
Para mais informações sobre como executar comandos da CLI do Airflow em ambientes do Cloud Composer, consulte Como executar comandos da CLI do Airflow.
Para mais informações sobre os comandos da CLI do Airflow disponíveis, consulte
a referência do comando gcloud composer environments run
.