Memento memo.

Today I Learned.

AirflowでDAGが認識されなくてハマった

起こった事象

  • 以下のようにDAGの生成を別のメソッドに切り出していたらAirflowからDAGが認識されなくなった
dag_factory = DAGFactory.get_default()
dag = dag_factory.create(
    dag_id="example",
    ...,
)

原因

  • DAG file は airflowdag という文字列を両方含んでいる必要があるらしい
  • option的には dag_discovery_safe_mode

airflow.apache.org

回避策

  • やや強引だが以下のようにAirflowという文字列が含まれるようにすればよい
  • または dag_discovery_safe_mode を False にしてもよい
dag_factory = AirflowDAGFactory.get_default()
dag = dag_factory.create(
    dag_id="example",
    ...,
)