我在 cli 中遇到 Apache Airflow 问题。
命令
airflow dags list
没有显示任何标记。
另外,“airflow task test dagid task01 2020-01-01”不会运行我的 dags。
在 GUI 中,一切都按预期运行。我看到我所有的人都在按照他们应该的方式运行。
当我执行“气流用户列表”时,CLI 上的一切似乎都正常。我看到我的用户名。当我在 de web gui 中更改此用户时,它也会在此处更改(CLI)。所以使用的DB必须是相同的。
我正在使用 docker 和 Airflow 版本 2.5.3。我从旧版本更新,同样的问题无缘无故地发生了。 (这就是我更新 Airflow 的原因)
有人提供线索吗?
我尝试更新 Airflow。检查了所有权限。 还检查了环境变量的所有路径。
不确定 Airflow 的 docker 设置如何,特别是 dags/log 是否已批量安装?
你也做了“airflow db升级”吗?我们遇到了一些类似的问题,但运行以下命令后,就可以了。
airflow db reset -y
airflow db init
我发现问题了。它位于特定的 DAG 内。现在我不知道这个 dag 到底有什么问题,但是当我从目录中删除它时,一切又恢复了。然而,网络界面没有显示有关此特定 dag 的任何错误。
我也遇到过同样的问题。我正在 AWS 中使用托管 Apache 气流。我正在尝试使用 AWS lambda 激活 dag,并且尝试列出 dag 并检查我要运行的 dag 是否已暂停或未使用
airflow dags list
命令。
但是,dag list 命令仅列出了一些 dags,并且缺少一些 dags。我调查了这些问题,发现当 dag 导入 SSHOperator 时,该 dag 不再列出airflow cli 命令。但 dag 在 Airflow UI 中显示没有任何问题,并且可以在 UI 中和通过 Airflow cli 命令触发
airflow dags trigger
。
from airflow.providers.ssh.operators.ssh import SSHOperator
当我删除 SSHOperator 导入 dag 列表时没有任何问题。我研究了几天但找不到解决方案。所以我使用了以下解决方法。
使用
dags unpause <dag_id>
取消暂停 dag,无论 dag 是暂停还是取消暂停。
使用
dags list-runs -o json
列出 dags 过滤出我想要的 dag,但 dag 必须至少有一次运行才能在此处列出 dag。
filtered_json = [dag_run for dag_run in output_json if dag_run['dag_id'] == dag_id]
希望这有帮助。