gpt4 book ai didi

airflow - Apache Airflow - 即使定义了 start_date 和 schedule_interval,Dag 也不会启动

转载 作者:行者123 更新时间:2023-12-04 07:27:24 28 4
gpt4 key购买 nike

我是 Airflow 的新手,但我已经定义了一个 Dag,每天早上 9 点发送一封基本的电子邮件。我的 DAG 如下:

from airflow import DAG
from datetime import datetime, timedelta
from airflow.operators.bash_operator import BashOperator
from airflow.operators.email_operator import EmailOperator
from airflow.utils.dates import days_ago

date_log = str(datetime.today())
my_email = ''
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': days_ago(0),
'email': ['my_email'],
'email_on_failure': True,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
'concurrency': 1,
'max_active_runs': 1
}

with DAG('TEST', default_args=default_args, schedule_interval='0 9 * * *',max_active_runs=1, catchup=False) as dag:
t_teste = EmailOperator(dag=dag, task_id='successful_notification',
to='my_email',
subject='Airflow Dag ' + date_log,
html_content="""""")
t_teste
我已经根据需要进行了所有配置,并且正在运行网络服务器和调度程序。另外,我的 Dag 在 UI 上处于事件状态。我的问题是我的 DAG 似乎什么都不做。它已经两天没有运行了,即使超过了预定时间,它也没有按预期运行。我已经手动测试并运行了我的触发器,它运行成功。但是如果我等待触发时间,它什么也不做。
你知道我做错了什么吗?
谢谢!

最佳答案

您的 DAG 永远不会被安排。 Airflow 计划计算 state_date + schedule_interval并在间隔结束时安排 DAG。

>>> import airflow
>>> from airflow.utils.dates import days_ago
>>> print(days_ago(0))
2021-06-26 00:00:00+00:00
计算中 2021-06-26 (今天)+ schedule_interval这意味着 DAG 将在 2021-06-27 09:00 上运行但是当我们到达 2021-06-27计算将产生 2021-06-28 09:00等等导致 DAG 从未实际运行。
结论是:永远不要在 start_date 中使用动态值!
要解决您的问题,只需更改: 'start_date': days_ago(0)到一些静态值,如: 'start_date': datetime(2021,6,25)请注意,如果您运行的是较旧版本的 Airflow,您可能还需要更改 dag_id .

关于airflow - Apache Airflow - 即使定义了 start_date 和 schedule_interval,Dag 也不会启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68138008/

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