导致气流回填Dag的睡眠延迟

时间:2020-06-18 06:27:30

标签: python-3.x airflow airflow-scheduler

对于回填作业,我尝试了timedelta传感器,但是它似乎要检查执行时间+ 60分钟,而不是当前时间+ 60分钟。 有什么办法可以使当前时间+ 60分钟延迟回填作业?

基本上,这种延迟将避免我达到API速率限制。 当前正在使用以下任务进行延迟,这似乎不起作用。

    task_id='wait',
    delta=timedelta(minutes=60),
    dag=dag
)

2 个答案:

答案 0 :(得分:2)

您将需要自己的自定义操作员或传感器,并使用任务实例的start_date属性。仅需对库中的start_date进行更改,就使用TimeDeltaSensor

如果您复制TimeDeltaSensor源代码,则可以使用以下方法覆盖poke方法:

        # ...
        target_dttm = context["task_instance"].start_date
        target_dttm += self.delta
        return timezone.utcnow() > target_dttm

已添加

尽管再次阅读您的问题,但我发现您可能只希望操作员在执行过程中保持睡眠。或者是一个带有睡眠模式的python可调用项,并将其通过PythonOperator推送...类似

def hit_api():
    pass

def hit_and_back_off:
    while True:
        try:
            hit_api()
        except APILimitError:
            sleep(<SOME SLEEP>)
        except e:
            raise

答案 1 :(得分:1)

我发现最简单的解决方案是使用另一个DAG,该DAG会安排回填