用于bonobo-etl Tee节点

时间:2019-06-05 09:46:51

标签: bonobo-etl

预计tee操作将接受一个输入并返回两个副本输出。

我注意到了bonobo-etl features Tee nodes,但不清楚如何使用它们。

它们可以用于将运行中的图形分为两个方向吗? 还是它们打算用于Load类型的持久性操作,以在不停止该特定节点中的数据流的情况下使用?

1 个答案:

答案 0 :(得分:0)

bonobo.Tee(f: Callable)操作仅应用一个函数并将未经修改的流输入传递到流输出中。

尽管名称显然来自unix工具tee(正如您所指出的),但它与the黑猩猩版本并不完全相似,一个输出是流输出,一个输出只是您使用的可调用对象。此可调用对象可能会也可能不会将数据发送到流(并且将数据发送到流目前尚不可靠)。

例如,如果您使用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

希望有帮助。