气流测试模式xcom拉/推不起作用

时间:2019-11-15 10:36:50

标签: testing airflow apache-airflow-xcom

我尝试通过气流cli test命令测试2个任务。

第一个任务运行,将最后一个控制台自动推送到xcom,我在气流GUI中看到了值some value

当我通过airflow cli test命令运行第二个任务时,我只是获得None作为返回值,但正如我在这里阅读的内容:How to test Apache Airflow tasks that uses XCom它应该可以工作,至少xcom_push很明显可以工作,为什么不xcom_pull ?

有人暗示如何使它工作? 提供上下文设置为true。

示例代码:

t1 = BashOperator(
    task_id='t1',
    bash_command='echo "some value"',
    xcom_push=True,
    dag=dag
)

t2 = BashOperator(
    task_id='t2',
    bash_command='echo {{ ti.xcom_pull(task_ids="t1") }}',
    xcom_push=True,
    dag=dag
)

谢谢!

编辑:当我在没有测试模式的情况下运行代码(DAG)时,xcom_pull正常工作

2 个答案:

答案 0 :(得分:0)

据我所知,“测试”运行时没有将任何内容保存到元数据数据库,这就是为什么当您运行Puller任务时,结果是“无”,而当您实际运行DAG代码时,它就可以工作了。

您可以在测试完第一个任务后直接查询元数据数据库。

答案 1 :(得分:0)

这里好像缺少Context,加上xcom_push=True,我们需要使用provide_context=True