Как использовать возвращаемое значение функции Python при использовании PythonOperator в Airflow / - PullRequest
0 голосов
/ 11 февраля 2020

Я создаю DAG с воздушным потоком с несколькими узлами PythonOperator. Один из них возвращает значение, которое позже будет использоваться в качестве параметра другого оператора. Но как я могу сохранить и получить доступ к этому возвращенному значению?

Например: у меня есть следующие функции

def sum(a, b):
    return a + b

def compare(c, d):
   return c > d

и следующий знак:

sum = PythonOperator(
      task_id = 'sum',
      python_callable = sum,
      op_args = [a, b],
      dag = dag
      )

compare = PythonOperator(
     task_id = 'compare',
     python_callable = compare,
     op_args = [{VALUE}, c]
     dag = dag
     )

sum >> compare

Я хочу {VALUE} будет значением, возвращаемым при выполнении узла суммы. Как я могу хранить и получить к нему доступ?

1 Ответ

1 голос
/ 12 февраля 2020

вы можете попытаться поделиться состоянием или результатами через XCOMs :

def sum(a, b, **context):
    result = a + b 
    context['task_instance'].xcom_push(key='result_of_sum', value=result)

def compare(c, d, **context):
   result_of_sum = context['task_instance'].xcom_pull(key='result_of_sum')
   return c > d

пожалуйста, не забудьте provide_context=True с параметрами PythonOperator

...