Airflow 如何从SimpleHttpOperator读取响应正文
我是个新手。我已经编写了一个使用SimpleHttpOperator提交HTTP Post的代码。在本例中,post请求返回一个令牌,我需要关于如何读取响应体的帮助Airflow 如何从SimpleHttpOperator读取响应正文,airflow,Airflow,我是个新手。我已经编写了一个使用SimpleHttpOperator提交HTTP Post的代码。在本例中,post请求返回一个令牌,我需要关于如何读取响应体的帮助 get_templates = SimpleHttpOperator( task_id='get_templates', method='POST', endpoint='myendpoint', http_conn_id = 'myconnection', trigger_rule="all
get_templates = SimpleHttpOperator(
task_id='get_templates',
method='POST',
endpoint='myendpoint',
http_conn_id = 'myconnection',
trigger_rule="all_done",
headers={"Content-Type": "application/json"},
xcom_push=True,
dag=dag
)
看来POST成功了。现在我的问题是如何阅读回复正文。
这是输出的代码,没有错误
[2019-05-06 20:08:40518]{http_hook.py:128}信息-向url发送“POST”:
/usr/lib/python2.7/site packages/urllib3/connectionpool.py:847:unsecurerequestwarning:正在发出未验证的HTTPS请求。强烈建议添加证书验证。见:
不安全请求警告)SimpleHttpOperator的
execute
函数返回响应。text
()。通过查看,您可以看到:
。。。如果任务返回一个值(从其运算符的execute()方法,或从PythonOperator的python_可调用函数),则包含该值的XCom将自动推送
这意味着响应主体被推送到XCom,并可供下游任务访问
例如,您可以使用PythonOperator
通过以下方式获取它:
response\u body=context['task\u instance'].xcom\u pull(task\u id='get\u templates')
此外,如果您只想记录响应而不是处理响应,您可以将
SimpleHttpOperator
构造函数的log\u响应设置为True
,谢谢。我试过了,我的错误率正在下降。我是否需要导入一些库响应\u body=context['task\u instance'].xcom\u pull(task\u id='get\u templates')NameError:名称“context”未定义我无法提取响应\u body。响应体的一个元素是令牌,我需要将其传递给下一个SimpleHttpOperator任务。类似于下面的标题={“授权”:“承载者”+访问令牌}。你能帮我吗?你只要从函数返回值,它就会以同样的方式发送到XCom。在下一个操作符中执行与在此处检索相同的操作。