DAG在Airflow UI上不可见 [英] DAG is not visible on Airflow UI
本文介绍了DAG在Airflow UI上不可见的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我在dags
文件夹中的dag文件.
This is my dag file in dags
folder.
Code that goes along with the Airflow located at:
http://airflow.readthedocs.org/en/latest/tutorial.html
"""
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.python_operator import PythonOperator
from datetime import datetime, timedelta
from work_file import Test
class Main(Test):
def __init__(self):
super(Test, self).__init__()
def create_dag(self):
default_args = {
"owner": "airflow",
"depends_on_past": False,
"start_date": datetime(2015, 6, 1),
"email": ["airflow@airflow.com"],
"email_on_failure": False,
"email_on_retry": False,
"retries": 1,
"retry_delay": timedelta(minutes=5),
# 'queue': 'bash_queue',
# 'pool': 'backfill',
# 'priority_weight': 10,
# 'end_date': datetime(2016, 1, 1),
}
dag = DAG("python_dag", default_args=default_args, schedule_interval='0 * * * *')
dummy_task = DummyOperator(task_id='dummy_task', retries=3)
python_task = PythonOperator(task_id='python_task', python_callable=self.my_func)
dummy_task >> python_task
if __name__ == "__main__":
a = Main()
a.create_dag()
这是我的另一个文件work_file.py
,位于同一dags
文件夹中.
This is my other file work_file.py
which is in the same dags
folder.
class Test:
def __init__(self):
pass
def my_func(self):
return "Hello"
目标:-目标是从我的dag文件中调用my_func
.
Aim:-The Aim is to call the my_func
from my dag file.
问题:-界面上似乎没有错误,但是我的dag python_dag
不可见.
Problem:- There seems to be no error on the UI,but my dag python_dag
is not visible.
我的服务器,调度程序也正在运行,我尝试重新启动它,但没有任何反应.
My server, scheduler is also running, I've tried restarting the same but nothing happened.
我也已导入文件(from work_file import Test
)
提前谢谢!
推荐答案
DAG存在多个问题:
There are multiple problems with the DAG:
- 未将操作员分配给任何DAG.将
dag=dag
添加到构造函数中.例如DummyOperator(..., dag=dag)
. -
create_dag()
不返回DAG.添加return dag
. - DAG脚本未作为顶级代码执行.也就是说,模块
__name__
从不'__main__'
.删除if __name__ == "__main__":
. - DAG对象必须在模块的全局名称空间中.将
create_dag()
的返回值分配给变量:dag = a.create_dag()
.
- The operators are not assigned to any DAG. Add
dag=dag
to the constructors. E.g.,DummyOperator(..., dag=dag)
. create_dag()
does not return the DAG. Addreturn dag
.- The DAG script is not executed as the top level code. That is, the modules
__name__
is never'__main__'
. Removeif __name__ == "__main__":
. - The DAG objects must be in the global namespace of the module. Assign the return value of
create_dag()
to a variable:dag = a.create_dag()
.
这篇关于DAG在Airflow UI上不可见的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文