如何检索 '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']