我有一个想要执行的函数列表,比如在管道中。
pipeline = [f1, f2, f3, f4]
(基本上我编写列表中的函数,请参阅:https ://mathieularose.com/function-composition-in-python/ ):
def run(pipeline):
return functools.reduce(lambda f, g: lambda x: f(g(x)), pipeline, lambda x: x)
我想观察函数何时被调用、何时完成、是否失败等,并将其记录到文件或数据库或 MongoDB 等。每个函数都返回一些 python 对象,所以我想使用返回值并记录其属性,例如
如果f1
返回一个list
我想登录f1 was completed at 23:00 on 04/22/2018. It returned a list of length 5
等等
我的问题不是关于执行函数,而是关于观察函数的行为。我希望这些功能与我如何编码管道无关。
我想知道如何在这里实现观察者模式。我知道“观察者模式”听起来太“面向对象”了,所以我的第一个想法是使用装饰器,但在寻找这方面的指南时我发现了RxPy
.
因此,我正在寻找有关如何解决此问题的指南。