Python 气流:同一个操作员实例是否可以重复使用并多次执行,以保持运行之间的状态?

Python 气流:同一个操作员实例是否可以重复使用并多次执行,以保持运行之间的状态?,python,airflow,airflow-operator,Python,Airflow,Airflow Operator,请您解释一下,在某些情况下,是否可以重用运算符实例,多次执行execute方法,并且在执行运行之间保持状态 换句话说,在气流中是否可能出现这种情况: 运算符中的自变量在init中初始化 execute方法读取自变量并对其进行更改 execute在同一个operator实例上运行一次,例如,由于重新启动或其他原因 并且可以读取由上一次执行运行更改的自变量吗 class MyOperator(BaseOperator): def __init__(self, para

请您解释一下,在某些情况下,是否可以重用运算符实例,多次执行execute方法,并且在执行运行之间保持状态

换句话说,在气流中是否可能出现这种情况:

运算符中的自变量在init中初始化

execute方法读取自变量并对其进行更改

execute在同一个operator实例上运行一次,例如,由于重新启动或其他原因 并且可以读取由上一次执行运行更改的自变量吗

class MyOperator(BaseOperator):

  def __init__(self,
             param_1
             ...
             param_n):

      self.var1=param_1

  def execute(self, context):
      #do some logic with self variable
      self.var1  += 1 #

由于以下原因,您所描述的场景不可能实现

当Airflow Scheduler将任务实例分派到队列时,工作进程中的每个心跳都会初始化该任务

这是因为操作符实例中填充的每个心跳都被初始化

运行之间存储的任何值在重新初始化时都会重置

如果需要在两次运行之间存储值,可以使用变量模型来存储这些值

从airflow.models导入变量 def executeself,上下文: 用自变量做一些逻辑 var1=Variable.get 计数 反序列化_json=True, 默认值为0 var1+=1 Variable.setcount,var1
你不能像那样访问以前的跑步记录。你能解释一下问题本身吗?您在这里描述了您的解决方法,但是如果您可以分享问题本身,可能会有其他想法。我只想知道,在execute方法中修改自变量并基于它使用一些逻辑是否安全,或者实例是否可以在airflow中重用,这样就不安全了,我不应该碰它们,而应该使用从实例派生的局部变量variables@Elad我不尝试以这种方式访问前一个实例状态。我只是想确认一下,这种情况根本不可能发生。