26

我是新手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)

在运行脚本时,它没有显示任何错误,但是当我检查它时dagsWeb-UI它没有显示在Menu -> DAGs下

在此处输入图像描述

但我可以在Menu -> Browse -> Jobsjob下看到计划

在此处输入图像描述

我也看不到 $AIRFLOW_HOME/dags 中的任何内容。应该只有这样吗?有人可以解释为什么吗?

4

9 回答 9

21

运行airflow list_dags 检查,dag 文件的位置是否正确。

出于某种原因,在执行此操作之前,我没有在浏览器 UI 中看到我的 dag。一定是浏览器缓存或其他问题。

如果这不起作用,您应该重新启动网络服务器airflow webserver -p 8080 -D

于 2019-07-11T09:41:09.857 回答
18

我有同样的问题。要解决我需要运行调度程序

airflow scheduler

如果没有这个命令,我看不到我的新 DAG 顺便说一句:UI 向我显示与该问题相关的警告:

调度程序似乎没有运行。最后一次心跳是在 9 秒前收到的。DAG 列表可能不会更新,并且不会安排新任务。

于 2020-03-16T13:02:38.890 回答
15

我们需要澄清几点:

  1. 绝不需要您自己运行 DAG 文件(除非您正在测试它的语法错误)。这是调度器/执行器的工作。
  2. 为了让调度程序(以及因此,Webserver)可以看到 DAG 文件,您需要将其添加到dags_folder(在 中指定airflow.cfg。默认情况下它是$AIRFLOW_HOME/dags子文件夹)。

Airflow Schedulerdags_folder默认每 5 分钟检查一次新的 DAG 文件(由dag_dir_list_intervalin管理airflow.cfg)。因此,如果您只是添加了一个新文件,您有两种选择:

  1. 重启调度程序
  2. 等到当前调度程序进程拾取新的 DAG。
于 2020-01-04T08:41:57.647 回答
11

您在作业页面上看到的ScheduleJob是调度程序的条目。那不是被安排的dag。

你的 $AIRFLOW_HOME/dags 是空的,这很奇怪。所有 dag 必须位于 $AIRFLOW_HOME/dags 目录中(特别是在airflow.cfg文件中配置的 dags 目录中)。看起来您没有将实际的 dag 存储在正确的目录(dags 目录)中。

或者,有时您还需要重新启动网络服务器才能显示 dag(尽管这似乎不是这里的问题)。

于 2016-08-17T20:01:49.573 回答
5

检查中的dags_folder变量 airflow.cfg。如果您有虚拟环境,export AIRFLOW_HOME=$(pwd)则从主项目目录运行命令。请注意,运行export AIRFLOW_HOME=$(pwd)希望您的 dagsdags位于项目目录的子目录中。

于 2019-01-31T19:21:45.647 回答
1

我遇到过同样的问题。我将下载的 Airflow 放了两次,一次没有 sudo,一次使用 sudo。我使用的是 sudo 版本,其中的目录位于我的用户路径下。我只是运行了气流命令:export AIRFLOW_HOME=~/airflow

于 2021-05-27T11:39:16.993 回答
0

检查Paused dags. 你的 DAG 可能已经结束了。如果您确定您已.py正确添加文件,然后使用手动键入 dag 的 url dag_id。例如http://AIRFLOW_URL/graph?dag_id=dag_id。然后您可以查看 Airflow 是否接受了您的 dag。

于 2020-10-28T10:17:59.167 回答
0

我遇到了同样的问题。就我而言,新 DAG 的权限不正确。

运行ls -l查看新 DAG 的权限。对我来说,所有者被列为我自己,而不是默认气流用户(在我的情况下应该是root)。

一旦我更改了权限 ( chown root:root <file_name>),该文件立即出现在 Web UI 中。

于 2021-09-14T15:31:49.717 回答
0

列出 dag 或重新启动网络服务器对我没有帮助。但重置数据库确实如此。

airflow db reset
于 2021-09-29T12:51:17.490 回答