2016-11-10 79 views

回答

17

這與provide_context=True參數有關。按氣流文檔,

如果設置爲true,氣流將通過一組可以在函數中使用關鍵字參數。這套kwargs完全對應於你可以在你的jinja模板中使用的東西。爲此,您需要在函數頭中定義** kwargs。

ds是這些關鍵字參數之一,它表示格式爲「YYYY-MM-DD」的執行日期。對於文檔中標記爲(模板化)的參數,可以使用默認變量'{{ ds }}'來傳遞執行日期。您可以在此處詳細瞭解默認變量: https://pythonhosted.org/airflow/code.html?highlight=pythonoperator#default-variables

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'))

希望這有助於。

+0

歡迎使用堆棧溢出!這看起來像一個深思熟慮和格式化的答案。謝謝你的貢獻https://stackoverflow.com/help/how-to-answer – Aron

+0

如果你定義你的函數像'def something(** kwargs)'那麼你會得到一個錯誤'意外的關鍵字參數'dag'傳遞給python_callable(* op_args,** op_kwargs)「,所以你似乎需要有其他的東西,我不太瞭解它,但在** kwargs之前使用任何這些關鍵字參數似乎工作。 – Davos

相關問題