gpt4 book ai didi

airflow - Apache Airflow : DAG executed twice before start_date

转载 作者:行者123 更新时间:2023-12-02 15:07:49 34 4
gpt4 key购买 nike

.大家好,

从 Airflow UI 中,我们试图了解如何在未来的特定时间开始 DAG 运行,但我们总是在追赶模式下获得 2 次额外运行(即使禁用追赶)

示例

使用以下参数创建 DAG 运行

  • 开始日期:10:30
  • 执行日期:未定义
  • 间隔 = 3 分钟(来自 .py 文件)
  • catchup_by_default = 假

在当前时间打开 ON 开关:10:28。我们得到的是 Airflow 触发 2 个 DAG 运行,执行日期为:

  • 10:24
  • 10:27

并且这 2 个 DAG 运行以追赶模式运行,这不是我们想要的:-(

我们做错了什么?我们可能理解 10:27 运行(ETL 概念),但我们没有得到 10:24 运行 :-(

谢谢你的帮助:-)

详情:

操作系统:RedHat 7

python :2.7

Airflow :v1.8.0

DAG python 文件:

from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta


default_args = {
'owner': 'aa',
'depends_on_past': False,
'start_date': datetime(2017, 9, 7, 10, 30),
'run_as_user': 'aa'
}

dag = DAG(
'dag3', default_args=default_args, schedule_interval=timedelta(minutes=3))
dag.catchup = False

create_command = "/script.sh "

t1 = BashOperator(
task_id='task',
bash_command='date',
dag=dag)

最佳答案

我尝试使用 Airflow v.1.8.0、python v.3.5、SQLite 上的数据库。以下 DAG 在 10:28 未暂停,与您的非常相似,并且可以正常工作(仅运行一次,在 10:33,持续 10:30)。

from datetime import datetime
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.python_operator import PythonOperator

def print_hello_3min():
return ('Hello world! %s' % datetime.now())

dag = DAG('hello_world_3min', description='Simple tutorial DAG 3min',
schedule_interval='*/3 * * * *',
start_date=datetime(2017, 9, 18, 10, 30),
catchup=False)

dummy_operator = DummyOperator(task_id='dummy_task_3min', retries=3, dag=dag)

hello_operator = PythonOperator(task_id='hello_task_3min',
python_callable=print_hello_3min, dag=dag)

dummy_operator >> hello_operator

关于airflow - Apache Airflow : DAG executed twice before start_date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46117211/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com