如何检索 'scheduled time' 用于 Airflow 中的追赶作业?
How can I retrieve the 'scheduled time' for catchup jobs in Airflow?
在构建 Airflow dag 时,我通常会定期指定一个简单的时间表 运行 - 我希望这是最常见的用途。
dag = DAG('my_dag',
description='this is what it does',
schedule_interval='0 12 * * *',
start_date=datetime(2017, 10, 1),
catchup=False)
然后我需要在我的实际过程中使用'date'作为参数,所以我只检查当前日期。
date = datetime.date.today()
# do some date-sensitive stuff
operator = MyOperator(..., params=[date, ...])
我的理解是,设置 catchup=True
将使 Airflow 在 start_date
和现在(或 end_date
)之间的每个调度间隔内安排我的 dag;例如每一天。
如何获取 scheduled_date
以在我的 dag 实例中使用?
我想你在这里指的是执行日期,你可以在你的操作符中使用宏,更多细节可以在这里找到:https://airflow.apache.org/code.html#macros。所以气流会尊重它,所以你不需要让你的 date
动态生成
Operator内部,可以直接在str中调用{{ ds }}
在运算符之外,例如 PythonOperator,您首先需要 provide_context=True
,然后将 **kwargs
作为最后一个参数传递给您的函数,然后您可以调用 kwargs['ds']
在构建 Airflow dag 时,我通常会定期指定一个简单的时间表 运行 - 我希望这是最常见的用途。
dag = DAG('my_dag',
description='this is what it does',
schedule_interval='0 12 * * *',
start_date=datetime(2017, 10, 1),
catchup=False)
然后我需要在我的实际过程中使用'date'作为参数,所以我只检查当前日期。
date = datetime.date.today()
# do some date-sensitive stuff
operator = MyOperator(..., params=[date, ...])
我的理解是,设置 catchup=True
将使 Airflow 在 start_date
和现在(或 end_date
)之间的每个调度间隔内安排我的 dag;例如每一天。
如何获取 scheduled_date
以在我的 dag 实例中使用?
我想你在这里指的是执行日期,你可以在你的操作符中使用宏,更多细节可以在这里找到:https://airflow.apache.org/code.html#macros。所以气流会尊重它,所以你不需要让你的 date
动态生成
Operator内部,可以直接在str中调用{{ ds }}
在运算符之外,例如 PythonOperator,您首先需要 provide_context=True
,然后将 **kwargs
作为最后一个参数传递给您的函数,然后您可以调用 kwargs['ds']