Как запустить конвейер, кроме нескольких узлов? - PullRequest
0 голосов
/ 05 ноября 2019

Я хочу запустить конвейер для разных файлов, но для некоторых из них не нужны все определенные узлы. Как я могу передать их?

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Чтобы отфильтровать несколько строк конвейера, вы можете просто отфильтровать список конвейеров изнутри Python, мой любимый способ - использовать понимание списка.

по имени

nodes_to_run = [node for node in pipeline.nodes if 'dont_run_me' not in node.name]
run(nodes_to_run, io)

по тегу

nodes_to_run = [node for node in pipeline.nodes if 'dont_run_tag' not in node.tags]
run(nodes_to_run, io)

Можно фильтровать по любому атрибуту, связанному с узлом конвейера, (имя, входы, выходы, короткое имя, теги)

Если вам нужно запустить конвейер таким образом в производственном процессе или из командной строки, вы можете либо пометить свой конвейер, чтобы он выполнялся с тегами, либо добавить пользовательский click.option к вашей функции run внутри kedro_cli.pyзатем запустите этот фильтр, если установлен флаг True.

Примечание Это предполагает, что ваш конвейер загружен в память как pipeline и каталог загружен как io

1 голос
/ 06 ноября 2019

Помогут ли здесь модульные трубопроводы ? Вы можете построить два конвейера, один из которых состоит только из двух «необязательных» узлов, а другой - без, затем вы можете вернуть конвейер по умолчанию, являющийся суммой двух. Примерно так:

def create_pipelines(**kwargs):
    two_node_pipeline = Pipeline(node(), node())
    rest_of_pipeline = Pipeline(node(), node(), node(), node())

    return {
        "rest_of_pipeline": rest_of_pipeline,
        "__default__": two_node_pipeline + rest_of_pipeline,
    }

Затем вы можете выполнить kedro run --pipeline rest_of_pipeline, чтобы запустить конвейер без этих двух узлов, или kedro run, чтобы запустить конвейер с двумя дополнительными узлами.

В противном случае,Я думаю, что если вы измените свой kedro_cli или ProjectContext или run.py, что бы это ни было, добавить его в функциональность --except будет довольно легко. Я мог бы заняться этим ...

Kedro выполнит сортировку узлов автоматически, в соответствии с toposort, см. Этот предыдущий ответ: Как запустить узлы в последовательности, как объявлено в конвейере Kedro?

...