Airflow 气流:PythonOperator:为什么要包括';ds';阿格?
在定义一个稍后用作python_可调用函数的函数时,为什么将“ds”作为函数的第一个参数 例如:Airflow 气流:PythonOperator:为什么要包括';ds';阿格?,airflow,Airflow,在定义一个稍后用作python_可调用函数的函数时,为什么将“ds”作为函数的第一个参数 例如: def python_func(ds, **kwargs): pass 我查阅了Airflow文档,但找不到任何解释。这与provide\u context=True参数有关。根据气流文件 如果设置为true,气流将传递一组可在函数中使用的关键字参数。这组KWARG与您可以在jinja模板中使用的内容完全对应。为此,您需要在函数头中定义**kwargs ds是这些关键字参数之一,以“YYY
def python_func(ds, **kwargs):
pass
我查阅了Airflow文档,但找不到任何解释。这与
provide\u context=True
参数有关。根据气流文件
如果设置为true,气流将传递一组可在函数中使用的关键字参数。这组KWARG与您可以在jinja模板中使用的内容完全对应。为此,您需要在函数头中定义**kwargs
ds
是这些关键字参数之一,以“YYYY-MM-DD”格式表示执行日期。对于文档中标记为(模板化)的参数,可以使用'{{ds}}'
默认变量传递执行日期。您可以在此处阅读有关默认变量的更多信息:
(过时)
PythonOperator没有模板参数,所以
python_callable=print_execution_date('{{ ds }}')
不行。要在PythonOperator的可调用函数中打印执行日期,您必须按以下步骤执行
def print_execution_date(ds, **kwargs):
print(ds)
或
希望这能有所帮助。如果你像
def something(**kwargs)
那样定义你的函数,那么你会得到一个错误“意外的关键字参数'dag'传递给python_callable(*op_args,**op_kwargs)”,所以看起来你需要一些其他的东西,我不太明白,但是在**kwargs之前使用这些关键字参数似乎是可行的。
def print_execution_date(**kwargs):
print(kwargs.get('ds'))