Из официальной документации Airflow для правил триггера :
Значение depends_on_past
(логическое), установленное в значение True, не позволяет запускать задачу, если предыдущее расписание для задачине удалось.
Это будет работать, если вы используете его в определении задачи.Вы также можете связать его с wait_for_downstream= True
, чтобы гарантировать, что экземпляр нового запуска не начнется, пока не завершится выполнение экземпляра задачи последнего запуска.
task_depends = DummyOperator( task_id= "task_depend", dag= dag, depends_on_past= True )
Однако другой способ обойти это, предполагая, что для работы вам нужен только последний запуск, - это использование Концепция последнего запуска только :
Стандартное поведение рабочего процесса включает выполнение ряда задач для определенной даты./временной интервал.Некоторые рабочие процессы, однако, выполняют задачи, которые не зависят от времени выполнения, но должны выполняться по расписанию, так же, как стандартное задание cron.В этих случаях засыпка или выполнение заданий, пропущенных во время паузы, просто тратит впустую циклы ЦП.
В подобных ситуациях вы можете использовать LatestOnlyOperator
, чтобы пропустить задачи, которые не выполняются во время последнего запланированного запуска дляDAG.LatestOnlyOperator
пропускает все непосредственные последующие задачи и сам по себе, если время сейчас не находится между его execution_time
и следующим запланированным execution_time
.