我在 Ubuntu 中使用 1.9.2 的 Airflow 版本和 Python 2.7。我试图从ParentOperator本身工作正常的类继承并创建一个名为ChildOperator. 但是当我创建一个ChildOperator实例时,我认为这里缺少一些关键字参数或弄乱了,我收到了这个错误:
airflow.exceptions.AirflowException:初始化运算符时使用关键字参数
这是一个简化的示例:
class ParentOperator(BaseOperator, SkipMixin):
@apply_defaults
def __init__(self,
conn_id,
object,
args={},
s3_conn_id=None,
s3_key=None,
s3_bucket=None,
fields=None,
*args,
**kwargs
):
super(ParentOperator, self).__init__(*args, **kwargs)
...
class ChildOperator(ParentOperator):
@apply_defaults
def __init__(self,
conn_id,
object,
args={},
s3_conn_id=None,
s3_key=None,
s3_bucket=None,
fields=None,
*args,
**kwargs
):
args=...
super(ChildOperator, self).__init__(
conn_id,
object,
args=args,
s3_conn_id=s3_conn_id,
s3_key=s3_key,
s3_bucket=s3_bucket,
fields=fields,
*args,
**kwargs
)
...
myobjc = ChildOperator(
conn_id="my_default",
object=table,
args={},
s3_conn_id='s3_postgres_dump',
s3_key=s3_key,
s3_bucket=s3_bucket,
dag=dag,
task_id="task1"
)
Run Code Online (Sandbox Code Playgroud)
知道是什么导致了这个错误?这更像是 Python 特定的问题吗?
__init__function ofChildOperator需要具有如下所有关键字参数(对于conn_idand的前两个参数object):
super(ChildOperator, self).__init__(
conn_id=conn_id,
object=object,
args=args,
s3_conn_id=s3_conn_id,
s3_key=s3_key,
s3_bucket=s3_bucket,
fields=fields,
*args,
**kwargs
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7325 次 |
| 最近记录: |