【问题标题】:Airflow DAG task not found after updating adding a task更新添加任务后未找到气流 DAG 任务
【发布时间】:2017-07-13 09:53:01
【问题描述】:

我在更新 dag 文件时遇到问题。 Dag 仍然有我的 dag 文件的旧版本。我添加了一个任务,但当我检查日志和 UI(DAG->代码)时,它似乎没有更新。

我有非常简单的任务。 我当然检查了airflow.cfg中的dag目录路径并重新启动了airflow webserver/scheduler。 我运行它没有问题(但使用旧的 dag 文件)。

【问题讨论】:

  • 在我的情况下,这是由于 dags 文件夹中有两个不同的 dag 文件具有相同的 dag_id。 Airflow 没有抛出任何错误,但它任意拾取这些 dag 之一。

标签: airflow


【解决方案1】:

看起来像气流的错误。一个临时解决方案是通过

从气流数据库中删除任务实例

delete from task_instance where dag_id=<dag_name> and task_id=<deleted_task_name>';

这应该比 resetdb 路由更简单,影响更小,它会删除所有内容,包括之前设置的变量和连接。

【讨论】:

  • 这对我有用。 (出于某种原因,resetdb 甚至没有为我吹走一切。)我更新了 DAG,删除了旧任务并创建了新任务。在运行新版本的 DAG 时,我得到一个 AirflowException 引用不再存在的旧任务。根据@Lily,我在元数据数据库中删除了引用该任务的行。我是 Airflow 的新手,所以我不知道最好的做法是完全重命名每个版本的 py DAG 文件,这样元数据数据库中就不会出现命名空间混淆。
【解决方案2】:

使用终端并在更改 dag 文件后立即运行以下命令。

airflow initdb

这对我有用。

【讨论】:

    【解决方案3】:

    您可以尝试在 dags 文件夹中删除该 dag 的旧 .pyc 文件并重新生成。

    【讨论】:

    • 能否再次检查配置中指定的 dags 文件夹中是否存在最新更新的文件?删除以前编译的文件应该会强制它重新编译 dag,从而更新代码。
    【解决方案4】:

    UI 有时对我来说不是最新的,但代码实际上在 dag bag 中。您可以尝试:

    1. 使用刷新按钮查看代码是否刷新
    2. 使用更高版本的1.8+,我之前用1.7.X的时候出现过这种情况,但是1.8+之后,在UI中刷新dag后感觉好多了
    3. 您还可以使用“气流测试”来查看代码是否到位,并尝试@Him 的建议。

    【讨论】:

    • 感谢您的详细评论!我尝试了 1-3 但它实际上仍然是旧的 DAG,并且 UI 也没有显示新文件...
    • 你的执行人是什么?我认为运行只支持芹菜
    【解决方案5】:

    同样的事情发生在我身上。

    最后最好的办法是“resetdb”,添加连接并再次导入变量,然后气流 initdb 并再次设置调度程序。

    我不知道为什么会这样。有人知道吗?编译后添加任务或更改名称似乎并不容易。删除 *.pyc 或 logs 文件夹对我不起作用。

    【讨论】:

    • 请解决这个问题。真的很烦人。
    【解决方案6】:

    在 Airflow 网络服务器的 DAG 页面中,删除 DAG。它将删除数据库中的记录。一段时间后,DAG 将再次出现在页面中,但旧的 task_id 已被删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多