Airflow 任务得到意外的参数';dag';在气流中
我创建了一个以PythonOperator作为操作符的任务。它调用另一个文件夹中带有参数的函数。但运算符不接受参数Airflow 任务得到意外的参数';dag';在气流中,airflow,airflow-scheduler,Airflow,Airflow Scheduler,我创建了一个以PythonOperator作为操作符的任务。它调用另一个文件夹中带有参数的函数。但运算符不接受参数dag=dag,因为它用于指向dag上下文,因此实际上必须接受该参数 dags/ - my_dag.py sub_folder/ - __init__.py - my_functions.py 我的DAG包含task1和task2。他们将从子文件夹调用该函数,并将参数传递给print 我的天哪 import datetime as dt from airflow im
dag=dag
,因为它用于指向dag上下文,因此实际上必须接受该参数
dags/
- my_dag.py
sub_folder/
- __init__.py
- my_functions.py
我的DAG包含task1和task2。他们将从子文件夹调用该函数,并将参数传递给print
我的天哪
import datetime as dt
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.operators.python_operator import PythonOperator
from sub_folder.my_functions import task1, task2
args = {
'owner': 'hello',
'start_date': dt.datetime(2019, 1, 1),
'retries': 1,
'retry_delay': dt.timedelta(minutes=2)
}
dag = DAG(
'try',
default_args = args,
schedule_interval = dt.timedelta(minutes=2))
task1 = PythonOperator(
task_id='task1',
python_callable=task1,
provide_context=True,
op_kwargs={'idx': "Hello "},
dag=dag,
)
task2 = PythonOperator(
task_id='task2',
python_callable=task2,
provide_context=True,
op_kwargs={'idx': "World!"},
dag=dag,
)
task1 >> task2
可调用函数只是打印传入参数的简单函数
my_.py
def task1(idx):
print(f"Task 1! {idx}")
def task2(idx):
print(f"Task 2! {idx}")
我的task1总是在尝试运行,过一段时间就会失败。我查了一下日志,想知道发生了什么事。我发现它有一个
TypeError: task1() got an unexpected keyword argument 'dag'
我不知道这里发生了什么。显然,我必须调用dag=dag,这实际上是一个让操作符指向它必须具有上下文的dag容器的参数。my_函数之间存在冲突。task1和名为
task1
的PythonOperator
尝试:
它解决了我的问题。很抱歉反应太晚。刚回去工作。
import sub_folder.my_functions as mf # changed
task1 = PythonOperator(
task_id='task1',
python_callable=mf.task1, # changed
provide_context=True,
op_kwargs={'idx': "Hello "},
dag=dag,
)