【问题标题】:How to run an Airflow DAG once after x minutes?如何在 x 分钟后运行一次 Airflow DAG?
【发布时间】:2019-09-10 16:12:51
【问题描述】:

我需要只运行一次 DAG,但要等待 10 分钟:

with models.DAG(
        'bq_executor',
        schedule_interval = '@once',
        start_date= datetime().now() + timedelta(minutes=10) ,
        catchup = False,
        default_args=default_dag_args) as dag:
       // DAG operator here

但我在 10 分钟后看不到执行情况。 start_date 有问题吗?

如果我使用 schedule_interval = '*/10 * * * *'start_date= datetime(2019, 8, 1)(从现在开始的旧日期),我可以每 10 分钟看到一次执行

【问题讨论】:

标签: google-cloud-platform airflow directed-acyclic-graphs


【解决方案1】:

不要使用datetime.now(),因为它会在加载 DAG 时不断变化,而 now() + 10 分钟将始终是未来的时间戳,导致 DAG 永远不会被调度。

【讨论】:

    【解决方案2】:

    Airflow 总是在 start_date 之后运行您添加的 DAGS。所以如果你今天有 start_date,它将在今天 23:59 之后开始。

    为此安排时间很棘手,因此请查看文档和示例: https://airflow.apache.org/scheduler.html

    在你的情况下,只需将 start_date 切换到昨天(或今天 -1),它就会从昨天的 ds(日期戳)今天开始

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多