"This DAG seems to be existing only locally. The master scheduler doesn't seem to be aware of its existence."

"This DAG seems to be existing only locally. The master scheduler doesn't seem to be aware of its existence."

我开始试验 Google Cloud Composer,我在其中部署了几个 DAG:

我的一个 DAG 的信息语句指示 This DAG seems to be existing only locally. The master scheduler doesn't seem to be aware of its existence. 不能 运行,即使手动也是如此。当我手动启动它时,它永远保持 "running" 状态,永远不会开始 运行 第一个任务。

正如下面详细解释的,两个 DAG 之间的唯一区别是损坏的是使用自定义运算符。

你知道这里出了什么问题吗?我该如何解决?

谢谢

  1. hello2_gcp_plugins_v2 正在调用唯一的 bash 并且电子邮件操作员正在按预期工作(我收到了电子邮件)。如果我配置 scheduler_interval 它会按预期开始。即使我将调度程序间隔设置为 None,当我手动启动它时它也运行良好
  2. hello2_gcp_plugins_v5 正在调用我已经部署在预期存储桶中的自定义运算符。自定义运算符只是通过 HttpHook 调用 API 来获取数据并通过 GoogleCloudStorageHook 将其上传到 gcs 存储桶。无论设置调度程序间隔还是保持 None,我总是在 UI 中看到信息语句并且 DAG 永远不会自动启动。手动启动时,它永远处于 运行ning 状态,并且永远不会触发第一个任务。

我会在解决问题时自己回答我的问题,如果其他人遇到同样的麻烦可能会有用。

即使不明显,以下信息 This DAG seems to be existing only locally. The master scheduler doesn't seem to be aware of its existence. 也是由于在我的 DAG 中使用了错误的运算符。就我而言,我的自定义操作员之一。

为了调试它,我点击 DAG -> 图形视图 -> 点击我的自定义运算符 -> 任务实例详细信息,显示了我的运算符中错误的堆栈跟踪。

我修复了我的操作员,将新版本上传到 GCS 存储桶中,并在几次刷新 Web 后 UI 不再提及信息消息,我的 DAG 是 运行。

如果您在不停止调度程序的情况下添加新的 dag,并且它还没有 运行 刷新 dags 文件夹以找到新的 dag,也会发生这种情况。您可以在 airflow.cfg 中更改调度程序刷新时间以使其刷新更快。