关于python:如何与客户运营商验证气流DAG?

How to validate airflow DAG with customer operator?

Airflow文档建议对DAG文件的基本健全性检查是对其进行解释。IE:

1
$ python ~/path/to/my/dag.py

我觉得这个很有用。不过,现在我已经创建了一个插件,$AIRFLOW_HOME/plugins下的MordorOperator

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容器中运行气流,并有一个脚本作为容器入口点运行。结果发现,当我运行测试时,plugins文件夹对我的容器不可用。我必须在容器中添加一个符号链接作为安装脚本的一部分。我的问题的解决方案对我来说是非常具体的,如果有人偶然发现了这一点,除了确保你的插件文件夹是正确可用的之外,我对你的情况没有一个很好的答案。