如何从SimpleHttpOperator读取响应正文

时间:2019-05-06 20:18:01

标签: airflow

我是Airflow的新手。我已经编写了一个代码,使用SimpleHttpOperator提交HTTP Post。在这种情况下,post请求返回一个令牌,我需要如何读取响应正文的帮助。

# find the head (not working)
head <- 
    xml_child(sample, 2) %>%
    xml_find_all(".//d1:div/head")  
# bind in a tibble
sample_tibble <- tibble(type, feature, head, length = sapply(tokenize_words(words), length), words)
Error: Tibble columns must have consistent lengths, only values of length one are recycled:
* Length 0: Column `head`
* Length 4: Columns `type`, `feature`, `length`, `words`

看起来POST成功。现在我的问题是如何阅读响应正文。 这是代码的输出,没有错误 [2019-05-06 20:08:40,518] {http_hook.py:128}信息-向网址https://auth.reltio.com/oauth//token?username=perf_api_user&password=perf_api_user!&grant_type=password发送“ POST” /usr/lib/python2.7/site-packages/urllib3/connectionpool.py:847:InsecureRequestWarning:发出未经验证的HTTPS请求。强烈建议添加证书验证。参见:https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings   InsecureRequestWarning)

1 个答案:

答案 0 :(得分:0)

execute的{​​{1}}函数返回SimpleHttpOperatorsource)。通过查看Airflow documentation for XCom,您可以看到:

  

...如果任务返回值(通过其操作员的execute()方法或PythonOperator的python_callable函数返回),则包含该值的XCom会被自动推送。

表示响应正文已推送到XCom,可供下游任务访问。

例如,您可以通过以下方式response.text来获取它:

PythonOperator

此外,如果您只想记录响应而不是处理响应,则可以将response_body = context['task_instance'].xcom_pull(task_ids='get_templates') 构造函数的log_response设置为SimpleHttpOperator