testing - Airflow 测试模式 xcom 拉/推不工作

标签 testing airflow

我尝试通过 airflow cli test 命令测试 2 个任务`

第一个任务运行,自动将最后一个控制台推送到 xcom,我按预期在 Airflow 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 工作正常

最佳答案

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

您可以在测试第一个任务后直接查询元数据库来验证这一点。

关于testing - Airflow 测试模式 xcom 拉/推不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58875195/

相关文章:

Apache Airflow 中的 Kubernetes 执行器 : Pod getting deleted immediately with error

python - 如何重新运行已经使用 TriggerDagrunoperator 执行的 dag?

python - 如何从不同的开始时间部署修改后的 Airflow dag?

python - Apache Airflow : airflow initdb throws ModuleNotFoundError: No module named 'wtforms.compat'

testing - 用户验收测试(UAT)和端到端(E2E)测试是一回事吗?

testing - Clojure 规范与基于属性的测试库(例如 Haskell QuickCheck)有何不同?

angular - 从我的组件单元测试中测试服务调用

visual-studio-2008 - Eclipse vs VS IDE 单元测试一个类

php - Symfony2 Behat 扩展上下文将导致 "Step is already defined"

python - Airflow:PythonOperator 的 python_callable 中的外部 python