原子执行操作序列的框架

时间:2014-08-20 15:11:49

标签: python function atomic operation

我有几个带副作用的函数(在程序存储器之外)。

我想编写一个以原子方式执行一系列操作(函数调用)的程序,这样如果序列的任何操作失败,就会回滚先前执行的操作。

我找不到任何这样做的图书馆,所以我开始自己写点什么。

我的想法是将操作包装在上下文管理器中,例如:

def f1(a):
    #a function with side effects
    pass

#...

with AtomicOperation() as a:
    a.f1( arg )
    a.f2( arg2 )
    somevariable= a_function_without_side_effects()
    a.f3( arg3 )

使用getattrpartial一些技巧似乎是可行的。

这看起来像是一种明智的设计吗?

1 个答案:

答案 0 :(得分:0)

你必须恢复到以前的状态,这很容易进入数据库关系世界。但我认为你的情况有所不同,所以compensations对你来说很好。