在 Airflow 中前一个 运行 完成 2 分钟后连续 运行 个 DAG

Continuously run a DAG after 2 minutes of completion of the previous run in Airflow

我想知道我们是否可以在 Airflow 中完成同一个 DAG 2 分钟后连续安排一个 DAG 运行。

编辑:

我的 DAG 应该 运行 每次完成其 运行 时,它必须等待 2 分钟并再次开始 运行ning。我不想每 2 分钟将我的 DAG 安排为 运行,而是应该在同一 DAG 完成 2 分钟后连续 运行。

是的,您可以安排 DAG 每 2 分钟 运行。

设置schedule_interval='*/2 * * * *'

Schedule_interval 接受 CRON 表达式:

https://en.wikipedia.org/wiki/Cron#CRON_expression

Structuring dag

如果您想在 2 分钟后连续重新运行,请尝试配置 TriggerDagRunOperator

您可以在一天中的任意时间安排您的 dag,然后使用 TriggerDagRunOperator 再次触发自身。要等2分钟再触发自己,你可以简单地引入一个睡眠任务。

DAG:

任务 1 >> 任务 2 >> 任务 3 BashOperator(bash_command="sleep 120") >> 任务 4 TriggerDagRunOperator(trigger_dag_id="this-dag-id")

您需要在 schedule_interval 中使用 timedelta 作为:

from datetime import datetime, timedelta

default_args = {
    'owner': 'airflow',
    'start_date': datetime(2021, 5, 9),
}


with DAG(
    dag_id="my_dag",
    default_args=default_args,
    schedule_interval=timedelta(minutes=2),
    max_active_runs=1,
    catchup=False,
) as dag:
    your code...

schedule_interval 中使用 timedelta 意味着它将在上一次 运行 完成后等待 2 分钟,然后再触发下一个。