将python脚本转换为Airflow PythonOperator(s)

时间:2018-06-10 13:49:47

标签: python airflow

我有一个从CronJob运行的工作python脚本。我想用PythonOperator(s)将其转换为DAG,因为我们现在正在转换为Airflow。

说我有功能:a(),b(),c(),d() 他们的执行顺序是:a->b->c->d

让我们说功能代码是:

def a(): 
    print("Happy")

def b(): 
    print("Birthday")

def c(): 
    print("to")

def d(): 
    print("you!")

**这只是一个例子,我所有功能的代码都比较复杂

我有这个DAG:

args = {
    'owner': 'airflow',
    'start_date': airflow.utils.dates.days_ago(2),
    'schedule_interval': '0 10 * * *'
}

dag = DAG(dag_id='example', default_args=args)

a = PythonOperator(task_id='a', dag=dag)
b = PythonOperator(task_id='b', dag=dag)
c = PythonOperator(task_id='c', dag=dag)
d = PythonOperator(task_id='d', dag=dag)

a.set_downstream(b)
b.set_downstream(c)
c.set_downstream(d)

我不明白的是我在哪里放置a(),b(),c(),d()的代码以及在执行PythonOperator时我在哪里指定其名称。

你可以说我正在寻找一种方法将我的Python脚本转换为Airflow,因为每个函数都是一个单独的运算符。

我认为这应该是非常简单和基本但我没有找到任何有关如何做到这一点的信息。

1 个答案:

答案 0 :(得分:1)

在python运算符中,应该执行的python函数被传递给运算符。因此,您需要传递一个python_callable kwarg,如下所示:

def do_a():
    print('running a')

a = PythonOperator(task_id='a', python_callable=do_a, dag=dag)

操作员的来源通常会记录他们的参数。 Python operator docs