可以在Airflow中使用BaseBranchOperator
来使用多重继承吗?
我想定义一个运算符,如下所示:
from airflow.models import BaseOperator
from airflow.operators.branch import BaseBranchOperator
class MyOperator(BaseOperator, BaseBranchOperator):
def execute(self, context):
print('hi')
def choose_branch(self, context):
if True:
return 'task_A'
else:
return 'task_B'
在这种情况下,认为execute
方法将在choose_branch
方法之前运行是否准确?
1条答案
按热度按时间fkaflof61#
这样不行的
在Airflow中,每个操作符都有设置操作符逻辑的执行函数。在
BaseBranchOperator
的情况下,execute
函数利用choose_branch
并处理如何跳过任务的逻辑,因此所有用户要做的只是说出要跳过的任务,这在choose_branch
中完成:因此,当您想要实现自己的分支运算符时,您所需要做的就是从
BaseBranchOperator
继承并覆盖choose_branch
函数。你可以决定你不想要这个机制,你想建立自己的分支逻辑,这意味着你需要实现如何跳过任务的逻辑。在这种情况下,你将实现
MyBaseBranchOperator
,然后你的实际分支操作符(在你的例子MyOperator
)将是:我认为您真正需要的是
pre_execute()
,它正好在调用execute()
之前触发所以你可能想要的是: