Airflow 气流-xcom值进入自定义运算符

Airflow 气流-xcom值进入自定义运算符,airflow,Airflow,从过去6个月开始,我一直在使用Airfow。我很高兴在气流中定义工作流。 我在下面的场景中无法获得xcom值(以黄色突出显示) 请查找下面的代码示例代码: 工作流程 注释: 1.CustomOperator是我自己编写的用于下载给定URL数据的操作员 请帮帮我 谢谢, Samanth我相信在推拉XCom时,键不匹配。每个XCom值都绑定到DAG ID、任务ID和密钥。如果您使用report\u id键进行推送,则还需要使用该键进行拉送 注意,如果未将键指定给xcom\u pull(),则它将使用

从过去6个月开始,我一直在使用Airfow。我很高兴在气流中定义工作流。 我在下面的场景中无法获得xcom值(以黄色突出显示)

请查找下面的代码示例代码:

工作流程 注释: 1.CustomOperator是我自己编写的用于下载给定URL数据的操作员

请帮帮我

谢谢,
Samanth

我相信在推拉XCom时,键不匹配。每个XCom值都绑定到DAG ID、任务ID和密钥。如果您使用
report\u id
键进行推送,则还需要使用该键进行拉送

注意,如果未将键指定给
xcom\u pull()
,则它将使用默认值
返回值
。这是因为如果任务返回结果,气流将在
return\u value
键下自动将其推送到XCom

这为您提供了两个解决问题的选项:

1) 继续按
report\u id
键,确保您也从中拔出

def push_function(**context):
    context['ti'].xcom_push(key='reportid', value='xyz')

...

custom_task = CustomOperator(
    ...
    url="http://www.google.com/{}".format("{{ task_instance.xcom_pull(task_ids='push_function', key='reportid') }}")
)
2) 让
push_function()
返回要推送到XCom的值,然后从默认键中拉出

def push_function(**context):
    return 'xyz'

...

custom_task = CustomOperator(
    ...
    url="http://www.google.com/{}".format("{{ task_instance.xcom_pull(task_ids='push_function') }}")
)

没有黄色突出显示。您定义的
CustomOperator
中的
url
字段是否已模板化?对不起,我没有找到。是的,您的理解是正确的。很抱歉延迟回复。我在度假。非常感谢您抽出时间。我将尝试此操作并更新状态。
def push_function(**context):
    return 'xyz'

...

custom_task = CustomOperator(
    ...
    url="http://www.google.com/{}".format("{{ task_instance.xcom_pull(task_ids='push_function') }}")
)