DAG在Web-UI中不可见。

40

我对Airflow还不熟悉。我正在跟随教程并编写以下代码。

from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime, timedelta
from models.correctness_prediction import CorrectnessPrediction

default_args = {
    'owner': 'abc',
    'depends_on_past': False,
    'start_date': datetime.now(),
    'email': ['abc@xyz.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5)
}

def correctness_prediction(arg):
    CorrectnessPrediction.train()

dag = DAG('daily_processing', default_args=default_args)

task_1 = PythonOperator(
    task_id='print_the_context',
    provide_context=True,
    python_callable=correctness_prediction,
    dag=dag)

在运行脚本时,没有显示任何错误,但是当我在Web-UI中检查dags时,它没有出现在菜单->DAGs下。

enter image description here

但是我可以在“菜单”->“浏览”->“作业”下看到已安排的任务

enter image description here

我也无法在$AIRFLOW_HOME/dags中看到任何内容。这是正常的吗?有人可以解释一下吗?

在您的主项目目录中创建一个名为 dags 的子目录,并将您的 DAG 移动到该目录中。然后刷新 Airflow UI,您应该能够看到它。请注意,AIRFLOW_HOME 应设置为您的主项目目录。 - tsveti_iko
你不应该使用 datetime.now() 来进行调度。 - Phd. Burak Öztürk
15个回答

0

检查“已暂停的DAGs”。您的DAG可能已经在那里结束了。如果您确定已正确添加了“.py”文件,则可以手动输入DAG的URL,使用“dag_id”。例如:http://AIRFLOW_URL/graph?dag_id=dag_id。然后您就可以看到Airflow是否接受了您的DAG。


0

列出DAG或重新启动Web服务器对我没有帮助。但重置数据库有用。

airflow db reset

0

在阅读了之前的答案后,对我来说这个方法有效:

  1. 重新启动Web服务器,例如 pkill -f "airflow webserver" 然后 airflow webserver -D
  2. 同时使用 pkill -f "airflow scheduler"airflow scheduler -D 重新启动调度器。

此外,请确保您的DAG包含在 airflow.cfg 中指定的DAGS文件夹中,该文件夹位于 $AIRFLOW_HOME 中。

这对我有用,在使用 airflow dags list 可以看到DAG,但在UI中没有显示,并且也无法触发它。


0

我在Windows 10上使用WSL时遇到了同样的问题,所以我不得不关闭调度程序和Web服务器,然后再次运行它,问题就解决了...

注意:似乎每次在airflow.cfg中更改dags路径时,都需要重新启动服务器。


0

有一种比上述方法更简单的方法。

DAG存储在数据库中,同时有关它们的信息被缓存在客户端中。

您不需要重新启动Airflow服务器或容器,只需使用浏览器页面进行“缓存刷新和硬重载”即可。 对于Chrome,操作如下:

F12 ->右键单击重新启动图标 ->清除缓存并硬重启

NIT:如果我找到像“缓存生命周期”这样的变量或更少hacky的方法,我会改进我的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接