如何在气流中通过xcom将参数从PythonOperator传递到HttpSensor?

2024-10-02 18:17:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想发送一个HTTP请求,其参数依赖于一个依赖于Python调用的结果。我正尝试使用XComs来实现这个目的。简化示例:

def get_index():
  return 0

get_index = PythonOperator(
  task_id='get_index',
  python_callable=get_index,
  dag=dag)

http_request = HttpSensor(
  task_id='send_http_request',
  http_conn_id=HTTP_HOST,
  endpoint=ENDPOINT,
  params={
    "index": "{{ ti.xcom_pull('get_index')  }}"
  },
  dag=dag)

get_index >> http_request

不幸的是,在检查了HTTP请求的选项之后,我发现宏没有得到正确的计算,而是发送了0{{ ti.xcom_pull('get_index') }}。可能出了什么问题?我应该使用HttpOperator而不是HttpSensor?在


Tags: 目的idhttptask参数getindexrequest
2条回答

正如faeder所提到的,params中的jinja模板目前没有被评估。我通过切换到SimpleHttpOperatrs并将模板放在data字段中来解决这个问题。在

我认为params是不推荐使用的,并且没有被气流中的jinja模板引擎扫描。尝试使用request_params而不是params(这是一个包含字符串键/值对的字典)。在

相关问题 更多 >