Способ обозначить определенный набор задач воздушного потока для запуска перед другими (порядок инвариант)? - PullRequest
1 голос
/ 30 января 2020

Имеет знак потока воздуха (v1.10.5), который выглядит как ...

enter image description here

Есть ли способ указать, что все синие задачи должны завершиться до того, как планировщик перейдет к каким-либо последующим задачам (поскольку в настоящее время планировщик иногда выполняет целую ветвь задач перед выполнением следующей синей задачи)?

Хочется не просто помещать их в последовательность (и использовать с правилом триггера TriggerRule.ALL_DONE), потому что на самом деле у них нет логического порядка, в котором они должны быть выполнены (кроме того, что все они должны быть выполнены перед любыми другими последующими задачами в любой ветке).

Кто-нибудь знает какой-либо способ сделать это (например, какой-то пул «приоритетов» для задач)? Другие предложения обойти?

1 Ответ

1 голос
/ 30 января 2020

Задавал этот вопрос в списке рассылки airflow , и вот результаты ...

white
blue = [blue_a, blue_b, blue_c]
green = [green_a, green_b, green_c]
yellow = [yellow_a, yellow_b]

cross_downstream(from_tasks=[white], to_tasks=[blue])
cross_downstream(from_tasks=blue, to_tasks=green)
cross_downstream(from_tasks=green to_tasks=yellow)

This should create the required network of dependencies between tasks.

Here is visualization available:
https://imgur.com/a/2jqyqQO

This is the easiest solution and in my opinion the correct one.
However, if you don't want a dependencies then you can create a new
schedule rule by editing the BaseOperator.deps property.

Документы для этой вспомогательной функции построения dag можно найти здесь: https://airflow.apache.org/docs/stable/concepts.html#relationship -helper

Который был полезным решением, но ...

Одна вещь в моем случае состоит в том, что следующие задачи (зеленые) в каждой ветви должны запускаться только в том случае, если синяя задача в той же ветке завершается успешно (не следует заботиться о статусе успеха / неудачи других синих задач, только о том, что они были выполнены). Поэтому я не думаю, что правило триггера ALL_DONE поможет зеленым, а ALL_SUCCESS будет слишком строгим.

Есть какие-нибудь идеи для такой вещи?

После Еще немного мысли, вот мой обходной путь ...

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...