2016-11-10 6 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

스택 오버플로에 오신 것을 환영합니다! 이것은 잘 생각하고 형식화 된 답변처럼 보입니다. 당신의 기여에 감사드립니다. – Aron

+0

'def something (** kwargs)'와 같은 함수를 정의하면 "예상치 못한 키워드 인수 'dag'가 전달되었습니다. python_callable (* op_args, ** op_kwargs) "그래서 당신이 다른 것을 필요로 할 것 같아서, 나는 그것을 이해하지 못한다. 그러나 ** kwargs가 사용되기 전에 그러한 키워드 매개 변수를 사용하는 것 같다. – Davos

관련 문제