Airflow 气流未加载/usr/local/AIFLOW/DAG中的DAG

Airflow 气流未加载/usr/local/AIFLOW/DAG中的DAG,airflow,Airflow,气流似乎跳过了我添加到/usr/local/aiffort/dag的dag 当我跑的时候 airflow list_dags 输出显示 [2017-08-06 17:03:47,220] {models.py:168} INFO - Filling up the DagBag from /usr/local/airflow/dags ------------------------------------------------------------------- DAGS ------

气流似乎跳过了我添加到/usr/local/aiffort/dag的dag

当我跑的时候

airflow list_dags
输出显示

[2017-08-06 17:03:47,220] {models.py:168} INFO - Filling up the DagBag from /usr/local/airflow/dags


-------------------------------------------------------------------
DAGS
-------------------------------------------------------------------
example_bash_operator
example_branch_dop_operator_v3
example_branch_operator
example_http_operator
example_passing_params_via_test_command
example_python_operator
example_short_circuit_operator
example_skip_dag
example_subdag_operator
example_subdag_operator.section-1
example_subdag_operator.section-2
example_trigger_controller_dag
example_trigger_target_dag
example_xcom
latest_only
latest_only_with_trigger
test_utils
tutorial
但这不包括/usr/local/aiffort/dag中的DAG

ls -la /usr/local/airflow/dags/
total 20
drwxr-xr-x 3 airflow airflow 4096 Aug  6 17:08 .
drwxr-xr-x 4 airflow airflow 4096 Aug  6 16:57 ..
-rw-r--r-- 1 airflow airflow 1645 Aug  6 17:03 custom_example_bash_operator.py
drwxr-xr-x 2 airflow airflow 4096 Aug  6 17:08 __pycache__

是否需要满足气流识别DAG并加载的其他条件?

我的DAG正在加载,但DAG的名称有误。我希望dag由文件命名,但名称由dag构造函数的第一个参数确定

dag = DAG(
    'tutorial', default_args=default_args, schedule_interval=timedelta(1))

实例化DAG时,它会根据您在DAG\u id属性中指定的名称弹出dag_id作为dag的唯一标识符

在列出dag之前,请尝试DB。这是因为气流列出了数据库(而不是您提到的文件夹)中存在的所有DAG。initdb将在数据库中为这些DAG创建条目


确保已将环境变量AIRFLOW_HOME设置为/usr/local/AIRFLOW。如果未设置此变量,气流将在主气流文件夹中查找DAG,该文件夹在您的案例中可能不存在。

尝试重新启动计划程序。当需要将新的DAG添加到DAG包时,需要重新启动调度程序

custom_example_bash_operator.py
DAG名称与其他名称不同吗?
如果是,请尝试重新启动计划程序,甚至重置数据库。我通常也会把文件名误认为是dag名称,所以最好还是给它们取相同的名称

您能否共享
自定义\u示例\u bash\u operator.py
中的内容?气流扫描文件中的某些魔法,以确定是否为DAG。它扫描气流和DAG


此外,如果对dag使用重复的dag_id,它将被覆盖。由于您似乎是从示例bash操作符派生出来的,您是否保留了DAG
example\u bash\u操作符的名称?请尝试重命名该文件。

示例文件不在/usr/local/afflow/dags中。您可以通过编辑aiffair.cfg(通常在~/aiffair中)将其静音。在“核心”部分设置
load\u examples=False

有两个错误可能会使您的DAG未列在
列表\u DAG

  • 您的DAG文件有语法问题。要检查这一点,只需运行
    python custom\u example\u bash\u operator.py
    ,查看是否存在任何问题
  • 查看文件夹是否为默认dag加载路径。对于一个新的bird,我建议创建一个新的.py文件并从这里复制样本,然后查看测试dag是否出现
  • 确保dag文件中有
    dag=dag('dag\u name',default\u args=default\u args)

  • 我发现,当我对dag文件夹中的dag进行更改时,我必须重新启动计划程序,以便UI拾取新的dag。我发现当我更新DAG时,它们会在我运行气流列表时出现在列表中。\u DAG只是在我重新启动调度程序之前不会出现在UI中

    首先尝试运行:

    airflow scheduler
    
    可能有两个问题: 1.检查在Dag python程序中创建Dag对象时给出的Dag名称

    dag = DAG(
    dag_id='Name_Of_Your_DAG', 
    ....)
    
    请注意,很多时候,给定的名称可能与DAG列表中已存在的名称相同(因为如果复制了DAG代码)。如果不是这样,那么 2.检查气流配置文件中DAG文件夹的路径设置。 您可以在系统的任何位置创建DAG文件,但需要在Airflow的配置文件中设置DAG文件夹/目录的路径

    例如,我在主目录中创建了我的DAG文件夹,然后我必须在终端中使用以下命令编辑airflow.cfg文件:

    在主目录或根目录中创建DAG文件夹

    $mkdir ~/DAG
    
    编辑安装了airflow的airflow目录中的airflow.cfg

     ~/$cd airflow
     ~/airflow$nano airflow.cfg
    
    在此文件中,将DAG_文件夹路径更改为我们创建的DAG文件夹


    如果仍面临此问题,请重新安装Airflow,并参考此安装Apache Airflow。

    如果Airflow.cfg config指向错误路径,则会出现这种情况

    步骤1:转到{basepath}/src/config/

    第2步:打开
    afflow.cfg
    文件

    步骤3:检查它应该指向您创建的dags文件夹的路径

    dags_folder = /usr/local/airflow/dags
    
    在我的例子中,dag文件中的
    print(something)
    阻止在命令行上打印dag列表


    如果上述解决方案不起作用,请检查您的dag中是否有打印行。

    是的,第一个元素是dag id,您可以看到诸神的变量列表,谢谢。我遇到了同样的问题,我犯了同样的错误,这个答案帮助了我。谢谢你的回答,你救了我下午剩下的时间!事实并非如此。调度程序在dag包中拾取新的dag。这就是我的原因。我原以为它会扫描
    DAG
    对象,但实际上它会先扫描文件中的字符串
    DAG
    aiffort
    ,然后再尝试解析它。
    dags_folder = /usr/local/airflow/dags