在上下文中发生异常时运行还原函数

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

注意

因为逆向操作也可能会失败,因此不能完全保证事务一定得到处理

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java重写父类中的特定行   java Apache Commons CLI订购帮助选项?   java如何将数据添加到网格视图   java如何在Apache Camel批处理后移动文件?   java如何为日期范围的between子句编写hql查询?   雅加达ee开始Java编程,我应该从哪里开始?   排序Java8+流:检查我的objectinstances的两个字段的列表顺序是否正确   java如何将json转换为Map<String,Object>确保整数为整数   java不能在Spring数据JPA批处理过程中创建TransactionException   java损坏的PDF文件从FTP下载到使用Apache Common Net的设备   java无法使用Spring批处理和Wso2为XML架构命名空间找到Spring NamespaceHandler   java Android ImageView未显示在SherlockFragment中   Maven在构建时出错=无法识别Java路径   java如何使用批处理文件调用关闭处理程序?   java admob广告横幅重叠我的游戏屏幕安卓