airflow - 气流 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 点开始工作。但是,我发现从那以后什么都没有触发。
我在这里做错什么了吗?
谢谢!
解决方案
是的,这是错误的设置。start_date
应该是固定的,而不是动态确定的。这在 Airflow 官方常见问题解答( What's the deal withstart_date
)中有明确说明:
我们建议不要将动态值用作
start_date
,尤其是datetime.now()
因为它可能会很混乱。一旦周期结束,任务就会被触发,理论上@hourly
DAG 永远不会在现在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_date
并schedule_interval
参考官方文档的更多信息,特别是关于Scheduling & Triggers的文档。