Назначение для Bonobo-etl Tee узла - PullRequest
0 голосов
/ 05 июня 2019
Ожидается, что операция

A tee будет принимать входные данные и возвращать два выходных сигнала копирования.

Я заметил, что bonobo-etl имеет узлы Tee , но это не яснокак они предназначены для использования.

Можно ли их использовать для раскладки бегущего графика в двух направлениях?Или они предназначены для постоянного действия типа Load, чтобы использовать без остановки потока данных в этом конкретном узле?

1 Ответ

0 голосов
/ 06 июня 2019

Операция bonobo.Tee(f: Callable) просто применяет функцию и передает входной поток без изменений в выходной поток.

Хотя название, очевидно, происходит от инструмента Unix tee (как вы указали), оно не совсем похоже на то, как в версии bonobo, один выход является выходом потока, а один - только вызываемым вами. Этот вызываемый может отправлять или не отправлять данные в поток (а отправка данных в поток пока что хакерская).

Например, если вы используете Tee(print), то поток будет передан как на выход, так и на print.

В качестве другого, более реалистичного примера вы сможете выполнить следующее:

import bonobo
import queue

output_queue = queue.Queue()


def get_graph():
    graph = bonobo.Graph()
    graph >> range(100) >> bonobo.Tee(output_queue.put) >> print
    return graph


if __name__ == "__main__":
    with bonobo.parse_args() as options:
        bonobo.run(get_graph())

    while True:
        try:
            print("out:", output_queue.get_nowait())
        except queue.Empty:
            break

Надеюсь, это поможет.

...