Перейти к содержимому

Создать ветвление

картинка_0

Описание

Блок предназначен для создания ветвления в процессе оркестратора. Данный блок должен располагаться внутри блока:

Создать процесс (Dag)

Требуется указать название/id ветвления, которое должно быть уникальным для данного процесса. Требуется указать наименование функции в результате выполнения которой будет определена ветвь, которая будет выполнятся в текущем процессе.


Пример использования

В данном примере создается процесс для оркестратора с аргументом по умолчанию trigger_rule:

  • trigger_rule - правила запуска нижестоящих роботов:
    1. all_success (по умолчанию) - все вышестоящие роботы выполнены успешно;
    2. all_failed - все вышестоящие роботы находятся в состоянии неудачно;
    3. all_done - все вышестоящие роботы завершились (успешно или неудачно);
    4. all_skipped - все вышестоящие роботы пропущены (skipped);
    5. one_failed - если хотя бы один из его предыдущих роботов завершился неудачно;
    6. one_success - если хотя бы один из его предыдущих роботов завершился успешно;
    7. one_done - если хотя бы один из его предыдущих роботов завершился успешно или не успешно;
    8. none_failed - все вышестоящие роботы выполнены успешно или были пропущены;
    9. none_failed_or_skipped - все вышестоящие роботы не завершились неудачей и хотя бы один робот завершился успешно;
    10. none_skipped - ни один вышестоящий робот не находится в состоянии пропущена.

Процесс включает в себя:

  1. Ветвление - test_branch;
  2. Робот-триггер my_process_trigger, который запускает процесс my_process;
  3. Робот-триггер puzzle_trigger_web, который запускает процесс web_search;
  4. Робота Robot_1;
  5. Функцию do_something (для определения выполняемой ветви).

Запускаемые Роботами-триггерами процессы должны существовать в оркестраторе. Запускаемый Robot_1 алгоритм должен располагаться на сервере оркестратора в папке /home/user/airflow/scripts/. Путь к Роботу локальный - временное расположение робота (во время выполнения алгоритма). ****Внутри функции do_something извлекается значение глобальной переменной my_variable. Создание глобальной переменной

Если переменная соответствует указанному значению, то выполняться будет ветвь my_process_trigger, иначе puzzle_trigger_web. Порядок выполнения роботов задан выражением**: test_branch >> [my_process_trigger, puzzle_trigger_web] >> Robot_1() -** в квадратных скобка располагаются роботы, которые образуют ветви, будет выполнена одна из указанных ветвей.

****Требуется сохранить процесс с уникальным наименованием, в виде python-скрипта (puzzle_trigger.py) и отправить на сервер оркестратора в папку с процессами (dags).

картинка_1

Результат

Процесс загружен в оркестратор с указанным расписанием и параметрами.

картинка_2

При запуске процесса:

  1. Выполняется test_branch - определяется ветвь, которая будет выполнятся далее;
  2. Выполняется одно из ветвлений;
  3. Выполняется Robot_1.
картинка_3

Следующий блок