Запускать задачу «Воздушный поток» отдельно от остальных задач группы обеспечения доступности баз данных. - PullRequest
0 голосов
/ 28 августа 2018

У меня есть DAG Airflow, которая запускается один раз в день в определенное время. Группа обеспечения доступности баз данных запускает несколько сценариев SQL для создания и загрузки таблиц в базе данных, а самая последняя задача обновляет разрешения, чтобы пользователи могли получить доступ к таблицам. В настоящее время задача разрешений требует, чтобы все предыдущие задачи SQL были выполнены, поэтому это означает, что ни одна из разрешений таблиц не обновляется, если любая задач таблицы не выполнена.

Чтобы исправить это, я хотел бы создать еще одну задачу разрешений (то есть задачу резервного копирования), которая запускается в заданное время независимо от состояния любой из предыдущих задач (не повредит многократно обновлять разрешения). Если я не укажу время, отличное от времени группы обеспечения доступности баз данных, то, поскольку у новой задачи нет зависимостей, задача попытается обновить разрешения до того, как обновится любая из таблиц. Могу ли я передать строку cron для конкретной задачи? Или есть возможность передать timedelta поверх времени DAG задачи? Мне нужно выполнить задачу через некоторое время после DAG.

1 Ответ

0 голосов
/ 28 августа 2018

Если ваша задача разрешений может запускаться независимо от того, что является результатом вышестоящих задач, я думаю, что лучшим вариантом будет просто изменить trigger_rule вашей задачи разрешений на all_done ( по умолчанию all_success).

Если вам нужно выполнить какие-то определенные действия в случае сбоя, вы можете подумать о создании вторичной группы доступности базы данных, первым шагом которой является датчик, ожидающий завершения основной группы доступности базы данных с помощью State.FAILED, а затем запустите задачу разрешений.

Посмотрите на ExternalTaskSensor , когда вы хотите установить зависимость между группами доступности баз данных.

Я не проверял, но вам также может понадобиться использовать soft_fail на датчике, чтобы дополнительный DAG не отображался как сбой при успешном завершении основного DAG.

...