나중에 python_callable로 사용할 함수를 정의하는 동안 'ds'가 함수의 첫 번째 인수로 포함되는 이유는 무엇입니까? 예를 들어공기 흐름 : PythonOperator : 'ds'인수를 포함해야하는 이유는 무엇입니까?
는 :
def python_func(ds, **kwargs):
pass
나는 공기 흐름 문서로보고 있지만, 어떤 설명을 찾을 수 없습니다.
나중에 python_callable로 사용할 함수를 정의하는 동안 'ds'가 함수의 첫 번째 인수로 포함되는 이유는 무엇입니까? 예를 들어공기 흐름 : PythonOperator : 'ds'인수를 포함해야하는 이유는 무엇입니까?
는 :
def python_func(ds, **kwargs):
pass
나는 공기 흐름 문서로보고 있지만, 어떤 설명을 찾을 수 없습니다.
이것은 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'))
스택 오버플로에 오신 것을 환영합니다! 이것은 잘 생각하고 형식화 된 답변처럼 보입니다. 당신의 기여에 감사드립니다. – Aron
'def something (** kwargs)'와 같은 함수를 정의하면 "예상치 못한 키워드 인수 'dag'가 전달되었습니다. python_callable (* op_args, ** op_kwargs) "그래서 당신이 다른 것을 필요로 할 것 같아서, 나는 그것을 이해하지 못한다. 그러나 ** kwargs가 사용되기 전에 그러한 키워드 매개 변수를 사용하는 것 같다. – Davos