Как прочитать тело ответа от SimpleHttpOperator - PullRequest
0 голосов
/ 06 мая 2019

Я новичок в Airflow.Я написал код для отправки HTTP Post с помощью SimpleHttpOperator.В этом случае пост-запрос возвращает токен, мне нужна помощь по чтению тела ответа.

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: 40,518] {http_hook.py:128} ИНФОРМАЦИЯ - Отправка «POST» на URL: https://auth.reltio.com/oauth//token?username=perf_api_user&password=perf_api_user!&grant_type=password / usr / lib /python2.7 / site-packages / urllib3 / connectionpool.py: 847: InsecureRequestWarning: выполняется непроверенный HTTPS-запрос.Настоятельно рекомендуется добавить проверку сертификата.См .: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings Небезопасный запрос на предупреждение)

1 Ответ

0 голосов
/ 06 мая 2019

Функция execute SimpleHttpOperator возвращает response.text ( источник ).Изучив документацию Airflow для XCom , вы увидите, что:

... если задача возвращает значение (либо из метода execute () своего оператора, либо изфункция python_callable PythonOperator), затем автоматически отправляется XCom, содержащий это значение.

означает, что тело ответа передается в XCom и доступно для последующих задач для доступа.

ДляНапример, вы можете PythonOperator извлечь его с помощью:

response_body = context['task_instance'].xcom_pull(task_ids='get_templates')

Кроме того, если вы хотите просто зарегистрировать ответ вместо его обработки, вы можете просто установить log_response SimpleHttpOperatorконструктор к True.

...