如何在 Airflow 中检索补缺作业的“预定时间”?

Kir*_*rst 7 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)
Run Code Online (Sandbox Code Playgroud)

然后,我需要在实际过程中使用“日期”作为参数,因此我只需检查当前日期。

date = datetime.date.today()
# do some date-sensitive stuff
operator = MyOperator(..., params=[date, ...])
Run Code Online (Sandbox Code Playgroud)

我的理解是,设置catchup=True将使 Airflow 为start_date从现在(或end_date)之间的每个计划间隔安排我的 dag;例如每天。

如何scheduled_date在我的 dag 实例中使用它?

Che*_*zhi 5

我认为你的意思是这里的执行日期,你可以在你的运算符中使用宏,更多细节可以在这里找到: https: //airflow.apache.org/code.html#macros。所以气流会尊重它,所以你不需要date动态生成

Operator内部,可以{{ ds }}直接调用str

在 Operator 之外,例如 PythonOperator,您需要provide_context=True首先将**kwargs最后一个参数传递给函数,然后您可以调用kwargs['ds']