在定义一个稍后用作python_callable的函数时,为什么'ds'被包含在函数的第一个arg中?
例如:
def python_func(ds, **kwargs):
pass
Run Code Online (Sandbox Code Playgroud)
我查看了Airflow文档,但找不到任何解释.
Dmi*_*ine 29
这与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 }}')
Run Code Online (Sandbox Code Playgroud)
不行.要在PythonOperator的可调用函数内打印执行日期,您必须这样做
def print_execution_date(ds, **kwargs):
print(ds)
Run Code Online (Sandbox Code Playgroud)
要么
def print_execution_date(**kwargs):
print(kwargs.get('ds'))
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
10108 次 |
| 最近记录: |