How to validate airflow DAG with customer operator?
Airflow文档建议对DAG文件的基本健全性检查是对其进行解释。IE:
1 | $ python ~/path/to/my/dag.py |
我觉得这个很有用。不过,现在我已经创建了一个插件,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | from airflow.plugins_manager import AirflowPlugin from airflow.utils.decorators import apply_defaults from airflow.operators import BaseOperator from airflow.exceptions import AirflowException import pika import json class MordorOperator(BaseOperator): JOB_QUEUE_MAPPING = {"testing":"testing"} @apply_defaults def __init__(self, job, *args, **kwargs): super().__init__(*args, **kwargs) # stuff def execute(self, context): # stuff class MordorPlugin(AirflowPlugin): name ="MordorPlugin" operators = [MordorOperator] |
号
我可以导入插件并在示例DAG中看到它的工作:
1 2 3 4 5 6 7 8 | from airflow import DAG from airflow.operators import MordorOperator from datetime import datetime dag = DAG('mordor_dag', description='DAG with a single task', start_date=datetime.today(), catchup=False) hello_operator = MordorOperator(job="testing", task_id='run_single_task', dag=dag) |
但是,当我试图解释这个文件时,我得到了一些失败,我怀疑这是因为插件成功运行后不应该得到的。我怀疑这是因为运行时发生了一些动态代码生成,当DAG被自己解释时,这些代码生成是不可用的。我还发现pycharm在导入插件时无法执行任何自动完成操作。
1 2 3 4 5 6 7 | (venv) 3:54PM /Users/paymahn/solvvy/scheduler mordor.operator ? ??? python dags/mordor_test.py section/key [core/airflow-home] not found in config Traceback (most recent call last): File"dags/mordor_test.py", line 2, in from airflow.operators import MordorOperator ImportError: cannot import name 'MordorOperator' |
。
如何测试使用插件的DAG的健全性?是否可以让Pycharm为自定义操作员提供自动完成功能?
我在Docker容器中运行气流,并有一个脚本作为容器入口点运行。结果发现,当我运行测试时,