Airflow 任务得到意外的参数';dag';在气流中

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

我创建了一个以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 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,
)