__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,
)
我有一个像
这样的DAGfrom 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,
)