气流测试任务有效,但在dag中运行失败

时间:2020-04-21 15:26:10

标签: python-3.x airflow

我想知道为什么以下命令可能起作用:

airflow test [dag_id] [task_id] 20200421

,但是如果我在UI中手动触发dag,则同一任务将失败。

任务本身很容易,基本上是:

cmd = 'ls' # other command os.system(cmd)

已导入os库,并且如上所述,在测试中它确实起作用,但在运行中却没有。我的代码在python中,这个特定的dag需要在终端中运行特定的命令。

您知道这怎么可能吗?

如果您需要更多信息,请在评论中告诉我!

2 个答案:

答案 0 :(得分:0)

此行为的一个可能原因可能是,您先前执行的任务已缓存在数据库中。

因此该测试有效,但是当您调用气流来运行DAG时,它已在后台运行,或者状态已缓存在数据库中而失败。尝试运行$ airflow resetdb

答案 1 :(得分:0)

答案:

此问题是由于运行脚本的用户不同。

airflow run使用其他用户(和(子)进程)作为airflow test。切换到气流用户不起作用,但是应该为气流用户提供更多权限(在Linux中)。