代码之家  ›  专栏  ›  技术社区  ›  jabberwocky

气流DAG未在catchup=False的指定时间运行

  •  1
  • jabberwocky  · 技术社区  · 7 年前

    我有一个气流DAG,对它进行回填真的没有意义。我计算出,对于气流1.8,你可以给DAG参数 catchup=False ,因此它将只启动最近的作业。 也就是说,我想让DAG在午夜启动,并每天运行。 但是现在的情况是:DAG立即启动,而不是在午夜。此外,当我清除所有DAG运行时,它将立即再次启动。DAG将每天运行,但将安排在错误的时间开始+1天。

    我怎么能有一个只开始运行最近作业的DAG, 在特定时间(午夜)开始?

    以下是我使用的代码:

    from datetime import datetime, timedelta
    from airflow import DAG
    from airflow.operators.dummy_operator import DummyOperator
    
    default_args = {'depends_on_past': False,
                    'start_date': datetime(2013, 1, 1)}
    
    with DAG('test_dag',
             default_args=default_args,
             schedule_interval=timedelta(days=1),
             catchup=False
             ) as dag:
        test = DummyOperator(task_id='test')
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Chengzhi    7 年前

    您可以将crontab放在schedule\u interval中,更多详细信息可以在这里找到: https://airflow.apache.org/scheduler.html#dag-runs 例如 schedule_interval="0 0 * * *"

    此外,气流在UTC下运行,请将“午夜”调整到正确的时区。