我正在用postgres操作员写一个气流dag 如果任务第一次运行,我需要在每个任务中执行一次操作 我们怎么做到这一点?
答案 0 :(得分:1)
如果知道是否是第一次DAG运行足以推断出它也是第一个任务运行,则可以执行以下操作:
为PostgresOperator
子类化,并在provide_context
类及其初始化代码中对PythonOperator
进行here处理。
这将允许您将执行宏作为kwargs中的字典传递给任务(在上面引用的PythonOperator示例中称为context的参数中)。然后,您可以访问指定为here的'prev_ds'或其他带有'prev_'前缀的宏。
如果所有这些带有'prev_'前缀的项目的值均为None,则您将知道它是第一次运行DAG(很有可能是第一次运行任务)。
在子类中,您可以像这样重写execute
函数:
def execute(self):
if self.context['prev_ds'] is None:
# DO WHATEVER YOU WANT TO DO ON FIRST RUN HERE
super().execute()