气流传感器重新安排运行时的持续状态

时间:2019-09-02 15:22:09

标签: airflow apache-airflow-xcom

我正在BaseSensorOperator中使用Airflow。我有一个用例,其中我希望BaseSensorOperator.poke(context)函数将一些信息传递给poke的下一个调用。我尝试按如下方式使用Xcom(通过无意义的值传递模拟情况):

    def poke(self, context):
        task_instance = context['task_instance']
        old_value = task_instance.xcom_pull(key='passing_this_value')
        if old_value:
            logging.info(f'retrieved from Xcom {old_value}')
        else:
            logging.info('no value was retrieved')
        new_value = datetime.now()
        logging.info(f'sending this value to Xcom {new_value}')
        task_instance.xcom_push(key='passing_this_value', value=new_value)

        if new_value.minute % 10 == 0:
            return True
        else:
            return False

当使用method='poke'创建传感器任务时,此方法效果很好,但当method='reschedule'时,此任务失败,因为在重新计划中,该运行中的任务已清除Xcom。

有办法解决吗?我可以使用Variable,但这会大大分散可变空间。还有其他建议吗?

0 个答案:

没有答案