在上下文中发生异常时运行还原函数
pytransaction的Python项目详细描述
伪事务处理
功能
对于一组函数,如果执行过程中发生异常, 按照反向的调用顺序依次调用对应的逆过程
栗子
frompytransactionimportTransactiondeftest1(*args,**kwargs):print('test1 running..',args,kwargs)deftest2(*args,**kwargs):print('test2 running...',args,kwargs)raiseValueError('oops, exception occurs')defrollback(*args,**kwargs):print('rolling back...',args,kwargs)try:withTransaction()ast:t.run(test1,rollback,args=(1,2),kwargs={'arg3':3},rargs=('a','b'),rkwargs={'t':'tt'})t.run(test1,rollback,kwargs={'arg3':3})t.run(test1,rollback,args=(4,),kwargs={'a':'aa'},rargs=(5,6),rkwargs='same')t.run(test2,rollback,args=('stop here',),rargs='same')t.run(test1,rollback,args=('will not run'))exceptExceptionase:print('handle exceptions here')raisee
注意
因为逆向操作也可能会失败,因此不能完全保证事务一定得到处理