Python 气流-如果脚本中未定义函数,则动态Dag创建失败

Python 气流-如果脚本中未定义函数,则动态Dag创建失败,python,airflow,airflow-scheduler,Python,Airflow,Airflow Scheduler,我试图通过自定义函数定义气流中的动力学DAG 如果函数在dag文件中定义,则dag将有效创建 但是,如果我将此函数放入自定义库(安装在带有pip的airflow env中)并将其导入dag文件中,则不会创建dag,尽管不会引发任何错误 我的实际代码大致如下所示: library.py def create_dag(dag_id, main, default_args, schedule_interval): dag = DAG( dag_id=dag_id,

我试图通过自定义函数定义气流中的动力学DAG

如果函数在dag文件中定义,则dag将有效创建

但是,如果我将此函数放入自定义库(安装在带有pip的airflow env中)并将其导入dag文件中,则不会创建dag,尽管不会引发任何错误

我的实际代码大致如下所示:

  • library.py

     def create_dag(dag_id, main, default_args, schedule_interval):
         dag = DAG(
             dag_id=dag_id,
             default_args=default_args,
             schedule_interval=None
         )
    
         with dag:
             t1 = PythonOperator(
                 task_id="main",
                 python_callable=main
             )
    
         return dag
    
  • 达格·皮

     from library import create_dag
    
     dag_id = "test"
    
     def main():
         print("foo")
    
     globals()[dag_id] = create_dag(
         dag_id,
         main,
         default_args,
         None
     )
    
  • 如前所述,如果我直接在dag.py中定义此函数,一切都会正常工作。 任何想法都欢迎


    提前感谢

    最终在文档中找到了解决方案:“包含DAG的文件是否在内容的某个位置包含字符串“airflow”和“DAG”?搜索DAG目录时,airflow会忽略不包含“airflow”和“DAG”的文件”以防止DagBag解析导入与用户DAG并置的所有python文件。” 通过将函数移动到另一个文件夹中,我从文件中删除了单词“DAG”