如何在HttpSensor运算符中提取xCom

时间:2019-06-27 08:52:02

标签: airflow apache-airflow-xcom

我想调用一个API,该API需要保存在xCom中的上一个任务的数据。如何访问该xCom。

我正在使用HttpOperater和HttpSensor来调用API。

2 个答案:

答案 0 :(得分:1)

您可以在1中使用模板,该模板具有两个模板参数。

示例:

HttpSensor(task_id='sfcase_hook_sensor',
                http_conn_id='conn_id', 
                method="GET",
                endpoint= + "xyz.com/abc/{{ti.xcom_pull(task_ids='previous_task_id')}}",
                request_params={
                   "someParam" : "{{ti.xcom_pull(task_ids='previous_task_id')}}"
                },
                extra_options={
                    'verify': False
                },
                headers={
                    "access_token" : token
                },
                response_check=hook_check, xcom_push=True)

答案 1 :(得分:0)

您需要在上下文中使用xcom_pull方法:

http_task = SimpleHttpOperator(
    task_id='http_call',
    endpoint='nodes/url',
    data="name=Joe",
    headers={"Content-Type": "application/x-www-form-urlencoded"},
    dag=dag,
)

def get_http_payload(**context):
    http_payload = ['ti'].xcom_pull(task_ids='http_call')
    print(http_payload)

process_output = PythonOperator(
    task_id='process_stuff',
    python_callable=get_http_payload,
    provide_context=True,
    dag=dag,
)

http_task >> process_output