我想知道为什么以下命令可能起作用:
airflow test [dag_id] [task_id] 20200421
,但是如果我在UI中手动触发dag,则同一任务将失败。
任务本身很容易,基本上是:
cmd = 'ls' # other command
os.system(cmd)
已导入os库,并且如上所述,在测试中它确实起作用,但在运行中却没有。我的代码在python中,这个特定的dag需要在终端中运行特定的命令。
您知道这怎么可能吗?
如果您需要更多信息,请在评论中告诉我!
答案 0 :(得分:0)
此行为的一个可能原因可能是,您先前执行的任务已缓存在数据库中。
因此该测试有效,但是当您调用气流来运行DAG时,它已在后台运行,或者状态已缓存在数据库中而失败。尝试运行$ airflow resetdb
答案 1 :(得分:0)
答案:
此问题是由于运行脚本的用户不同。
airflow run
使用其他用户(和(子)进程)作为airflow test
。切换到气流用户不起作用,但是应该为气流用户提供更多权限(在Linux中)。