如何使用SimpleHttpsOperator读取先前消息的XCom,然后决定在Airflow中执行任务2

时间:2019-04-04 13:10:03

标签: airflow apache-airflow-xcom

如何使用SimpleHttpsOperator读取上一条消息的XCom,然后决定在Airflow中执行任务2。

假设我有3个SimpleHttpsOperator任务,所有任务都返回一条XCom消息,在XCom值中它根据结果返回成功或失败。

所以在执行t2之前,我想检查t1是否成功。 我所有的任务都使用SimpleHttpsOperator

t1 >> t2 >> t3

下面是我的代码段:

t1 = SimpleHttpOperator(
                   task_id='t1',
                   http_conn_id='http_temp',
                   endpoint='update_data',
                   method='POST',
                   headers={"Content-Type":"application/json"},
                   xcom_push=True,
                   log_response=True,
                   dag=dag,
)


t2 = SimpleHttpOperator(
                                   task_id='t2',
                                   http_conn_id='http_temp',
                                   endpoint='update_data',
                                   method='POST',
                                   headers={"Content-Type":"application/json"},
                                   # response_check=lambda response: True if len(response.json()) == 0 else False,
                                   xcom_push=True,
                                   log_response=True,
                                   dag=dag,

1 个答案:

答案 0 :(得分:0)

您将必须使用BranchPythonOperator。以下依赖项链中的add = () => { this.setState({notifications: [...this.state.notifications, Math.random().toString()]}) } ... key={notification} check_t1_status将使用check_t2_status使用xcom检查上一个任务的输出。然后根据输出,执行下一个任务,或者如果前一个任务失败,则运行虚拟尾巴。

BranchPythonOperator