如何修复 Airflow DAG 日志中的“无法从工作程序获取日志文件。不支持的 URL 协议”错误?

raa*_*aaj 10 airflow airflow-scheduler airflow-webserver

我正在通过此图像通过 docker 运行 Airflowapache/airflow:2.1.0 请参阅此线程以了解我遇到的初始错误。

目前我可以运行我以前现有的 DAG。但是,当我添加较新的 DAGS 时,我在日志文件中收到以下错误。我很确定这不是内存或计算的问题。

*** Log file does not exist: /opt/airflow/logs/my-task/my-task/2021-06-15T14:11:33.254428+00:00/1.log
*** Fetching from: http://:8793/log/my-task/my-task/2021-06-15T14:11:33.254428+00:00/1.log
*** Failed to fetch log file from worker. Unsupported URL protocol ''
Run Code Online (Sandbox Code Playgroud)

我已经尝试过的事情:

  • 重新启动我的容器
  • docker prune然后建造
  • 从前端删除 DAG

小智 7

我没有解决这个问题的办法,但我有一个线索。

显然,这个问题是一个错误,如果任务甚至没有运行,它会阻止 Airflow 存储日志,正如您已经知道的那样。

因此,不是语法错误的东西会导致错误。就我而言,我 80% 确定 Airflow 没有选择我的 config 和 utils 文件夹的正确路径,因此,任务要做的第一件事是尝试使用存储在该文件夹中的函数和凭据,但无法立即使用在能够存储一些日志之前崩溃。也许我可以在 yaml 文件上做一些事情。

顺便说一句,昨天我在多个平台上看到了你的问题,但没有任何答案,我想告诉你,在这场让被遗弃的 Airflow DAG 发挥作用的十字军东征中,我的灵魂与你的灵魂产生了共鸣。我感觉到你了,兄弟。


小智 1

这里同样的问题。我在 K8S 集群中使用 CeleryExecutor。每个组件都作为独立的 pod 运行(部署中)。我的第一个想法:这可能与缺少已安装的卷(带文件)有关。我会尝试安装 PVC 并提供信息(如果有效)