DAG 在 Web 中不可见-UI
DAG not visible in Web-UI
我是 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
时,它没有显示在 Menu->DAG
但我可以在菜单->浏览->工作[下看到预定的job
=35=]
我也看不到 $AIRFLOW_HOME/dags 中的任何内容。难道只能这样吗?有人可以解释为什么吗?
您在作业页面上看到的 ScheduleJob
是调度程序的条目。那不是预定的日期。
你的 $AIRFLOW_HOME/dags 是空的,这很奇怪。所有 dags 必须位于 $AIRFLOW_HOME/dags 目录中(特别是在 airflow.cfg
文件中配置的 dags 目录中)。看起来您没有将实际的 dag 存储在正确的目录(dags 目录)中。
或者,有时您还需要重新启动网络服务器才能显示 dag(尽管这似乎不是这里的问题)。
检查 airflow.cfg
中的 dags_folder
变量。如果您有虚拟环境,那么 运行 主项目目录中的命令 export AIRFLOW_HOME=$(pwd)
。请注意,运行ning export AIRFLOW_HOME=$(pwd)
期望您的 dag 位于项目目录的 dags
子目录中。
运行 airflow list_dags
检查 dag 文件的位置是否正确。
出于某种原因,我在执行此操作之前没有在浏览器中看到我的 dag UI。一定是浏览器缓存或其他问题。
如果这不起作用,您应该使用 airflow webserver -p 8080 -D
重新启动网络服务器
我们需要澄清几件事:
- 绝对不需要您自己 运行 DAG 文件(除非您 testing 它是因为语法错误)。这是 Scheduler/Executor.
的工作
- 要使 DAG 文件对调度程序(以及 Web 服务器)可见,您需要将其添加到
dags_folder
(在 airflow.cfg
中指定。默认情况下它是 $AIRFLOW_HOME/dags
子文件夹) .
Airflow Scheduler 默认每 5 分钟检查 dags_folder
新 DAG 文件(由 airflow.cfg
中的 dag_dir_list_interval
控制)。所以如果你刚刚添加了一个新文件,你有两个选择:
- 重新启动计划程序
- 等到当前调度程序进程选择新的 DAG。
我有同样的问题。要解决我需要 运行 scheduler
airflow scheduler
没有这个命令,我看不到我的新 DAG
顺便说一句:UI 显示与该问题相关的警告:
The scheduler does not appear to be running. Last heartbeat was received 9 seconds ago. The DAGs list may not update, and new tasks will not be scheduled.
勾选 Paused dags
。您的 DAG 可能到此为止。如果您确定已正确添加 .py
文件,请使用 dag_id
手动键入 dag 的 url。例如http://AIRFLOW_URL/graph?dag_id=dag_id
。然后你可以看看Airflow是否接受了你的DAG。
我遇到了同样的问题。我把下载的 Airflow 放了两次,一次没有 sudo,一次有 sudo。我使用的是 sudo 版本,其中目录位于我的用户路径下。我只是 运行 气流命令:
导出 AIRFLOW_HOME=~/气流
我遇到了同样的问题。就我而言,新 DAG 的权限不正确。
运行 ls -l
查看新DAG的权限。对我来说,所有者被列为我自己,而不是默认的气流用户(在我的情况下应该是 root
)。
一旦我更改了权限 (chown root:root <file_name>
),该文件立即出现在 Web UI 中。
列出 dag 或重新启动网络服务器对我没有帮助。但重置数据库确实如此。
airflow db reset
我是 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
时,它没有显示在 Menu->DAG
但我可以在菜单->浏览->工作[下看到预定的job
=35=]
我也看不到 $AIRFLOW_HOME/dags 中的任何内容。难道只能这样吗?有人可以解释为什么吗?
您在作业页面上看到的 ScheduleJob
是调度程序的条目。那不是预定的日期。
你的 $AIRFLOW_HOME/dags 是空的,这很奇怪。所有 dags 必须位于 $AIRFLOW_HOME/dags 目录中(特别是在 airflow.cfg
文件中配置的 dags 目录中)。看起来您没有将实际的 dag 存储在正确的目录(dags 目录)中。
或者,有时您还需要重新启动网络服务器才能显示 dag(尽管这似乎不是这里的问题)。
检查 airflow.cfg
中的 dags_folder
变量。如果您有虚拟环境,那么 运行 主项目目录中的命令 export AIRFLOW_HOME=$(pwd)
。请注意,运行ning export AIRFLOW_HOME=$(pwd)
期望您的 dag 位于项目目录的 dags
子目录中。
运行 airflow list_dags
检查 dag 文件的位置是否正确。
出于某种原因,我在执行此操作之前没有在浏览器中看到我的 dag UI。一定是浏览器缓存或其他问题。
如果这不起作用,您应该使用 airflow webserver -p 8080 -D
我们需要澄清几件事:
- 绝对不需要您自己 运行 DAG 文件(除非您 testing 它是因为语法错误)。这是 Scheduler/Executor. 的工作
- 要使 DAG 文件对调度程序(以及 Web 服务器)可见,您需要将其添加到
dags_folder
(在airflow.cfg
中指定。默认情况下它是$AIRFLOW_HOME/dags
子文件夹) .
Airflow Scheduler 默认每 5 分钟检查 dags_folder
新 DAG 文件(由 airflow.cfg
中的 dag_dir_list_interval
控制)。所以如果你刚刚添加了一个新文件,你有两个选择:
- 重新启动计划程序
- 等到当前调度程序进程选择新的 DAG。
我有同样的问题。要解决我需要 运行 scheduler
airflow scheduler
没有这个命令,我看不到我的新 DAG 顺便说一句:UI 显示与该问题相关的警告:
The scheduler does not appear to be running. Last heartbeat was received 9 seconds ago. The DAGs list may not update, and new tasks will not be scheduled.
勾选 Paused dags
。您的 DAG 可能到此为止。如果您确定已正确添加 .py
文件,请使用 dag_id
手动键入 dag 的 url。例如http://AIRFLOW_URL/graph?dag_id=dag_id
。然后你可以看看Airflow是否接受了你的DAG。
我遇到了同样的问题。我把下载的 Airflow 放了两次,一次没有 sudo,一次有 sudo。我使用的是 sudo 版本,其中目录位于我的用户路径下。我只是 运行 气流命令: 导出 AIRFLOW_HOME=~/气流
我遇到了同样的问题。就我而言,新 DAG 的权限不正确。
运行 ls -l
查看新DAG的权限。对我来说,所有者被列为我自己,而不是默认的气流用户(在我的情况下应该是 root
)。
一旦我更改了权限 (chown root:root <file_name>
),该文件立即出现在 Web UI 中。
列出 dag 或重新启动网络服务器对我没有帮助。但重置数据库确实如此。
airflow db reset