我尝试通过气流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正常工作
答案 0 :(得分:0)
据我所知,“测试”运行时没有将任何内容保存到元数据数据库,这就是为什么当您运行Puller任务时,结果是“无”,而当您实际运行DAG代码时,它就可以工作了。
您可以在测试完第一个任务后直接查询元数据数据库。
答案 1 :(得分:0)
这里好像缺少Context,加上xcom_push=True,我们需要使用provide_context=True