Airflow:PythonOperator:为什么要包含' ds' ARG?

时间:2016-11-10 16:02:49

标签: airflow

在定义稍后用作python_callable的函数时,为什么' ds'作为函数的第一个arg包括在内?

例如:

def python_func(ds, **kwargs):
    pass

我查看了Airflow文档,但找不到任何解释。

1 个答案:

答案 0 :(得分:25)

这与provide_context=True参数有关。根据Airflow文档,

  

如果设置为true,Airflow将传递一组可在您的函数中使用的关键字参数。这组kwargs完全对应于你在jinja模板中可以使用的内容。为此,您需要在函数头中定义** kwargs。

ds是这些关键字参数之一,表示格式为" YYYY-MM-DD"的执行日期。对于在文档中标记为(模板化)的参数,可以使用'{{ ds }}'默认变量来传递执行日期。您可以在此处阅读有关默认变量的更多信息:

https://pythonhosted.org/airflow/code.html?highlight=pythonoperator#default-variables(已废弃)

https://airflow.incubator.apache.org/concepts.html?highlight=python_callable

PythonOperator没有模板化参数,所以做了像

这样的事情
python_callable=print_execution_date('{{ ds }}')

没有工作。要在PythonOperator的可调用函数内打印执行日期,您必须按

进行操作
def print_execution_date(ds, **kwargs):
    print(ds)

def print_execution_date(**kwargs):
    print(kwargs.get('ds'))

希望这有帮助。