__init__() 恰好接受气流 dag 任务中给出的 2 个参数 1

__init__() takes exactly 2 arguments 1 given in airflow dag task

我有一个像

这样的DAG
from airflow import DAG
from datetime import date time
dag_crawl = DAG(
    dag_id='test_dag',
    start_date= datetime(year=2017, month=3, day=28),)

和类似的任务

test_task = PythonOperator(
    task_id = 'test_task',
    python_callable = AClass().a_method,
    # to pass self as first argument while calling a_method
    op_args = [AClass()],
)

尽管在调用 class 'AClass()'

的方法 'a_method' 时传递了 self

我得到 损坏的 DAG:__init__() 正好接受 2 个参数(给定 1 个)

你能给出一些解决这个问题的建议吗?

首先,调用方法时不必传递self对象:class:AClass()的a_method引用时在 callable python_callable = AClass().a_method 中调用的方法没有 self 就足够了。您不必通过 [AClass()] 传递 op_args。这个错误:Broken DAG: __init__() takes exactly 2 arguments (1 given) 是因为你的 AClass() 需要一个你没有给出的参数(我最有可能的猜测).

你需要这样的东西

test_task = PythonOperator(
task_id = 'test_task',
python_callable = AClass(some_param=some_value).a_method,
)