首页 > 解决方案 > 气流 dag 永远不会被动态 start_date 触发

问题描述

我已将 dag 的参数设置为:

today = datetime.now().date()
default_args = {'owner': 'Mark',
                'depends_on_past': False,
                'start_date': datetime(today.year,today.month,today.day,10,0),
                'retries': 3,
                'retry_delay': timedelta(minutes=10),
                'schedule_interval': '@daily'}

目的是每天上午 10 点开始工作。但是,我发现从那以后什么都没有触发。

我在这里做错什么了吗?

谢谢!

标签: airflow

解决方案


是的,这是错误的设置。start_date应该是固定的,而不是动态确定的。这在 Airflow 官方常见问题解答( What's the deal withstart_date )中有明确说明:

我们建议不要将动态值用作start_date,尤其是datetime.now()因为它可能会很混乱。一旦周期结束,任务就会被触发,理论上@hourlyDAG 永远不会在现在now()移动的一个小时后到达。

您应该放置一个固定start_date的(过去),然后将 设置schedule_interval为一个 cron 表达式,意思是“每天 10 点”(即"0 10 * * *")。我会做这样的事情:

default_args = {'owner': 'Mark',
                'depends_on_past': False,
                'start_date': dt.datetime(2020, 4, 8)
                'retries': 3,
                'retry_delay': timedelta(minutes=10),
                'schedule_interval': '0 10 * * *'}

有关start_dateschedule_interval参考官方文档的更多信息,特别是关于Scheduling & Triggers的文档。


推荐阅读