可扩展事务系统,用于构建具有提交/回滚语义的工作流。
RSTransaction的Python项目详细描述
rstransaction是一个python2/python3工具箱,用于为任何类型的操作创建事务系统:内存、文件系统、远程存储…
它支持提交/回滚和保存点。
它从未在生产中使用过,但经过了很好的测试,并且易于扩展以支持不同的行为:立即或延迟操作、在崩溃时将操作记录到磁盘文件或数据库中、是否在错误时自动回滚…
安装
建议使用pip,尽管从存储库的签出处安装(通过setup.py)也可以工作:
$ pip install rstransaction
用法
你最好的办法是阅读资料(尤其是测试)。
其思想是使用TransactionalActionAdapter创建“原子”操作。 每个操作都知道如何操作、如何回滚自身,而且 如何对参数进行预处理,使其不含糊(例如 将相对文件名转换为绝对文件名)。
这些操作随后在TransactionalActionRegistry附近注册。
必须选择一个动作录制器(默认的,ActionRecorderBase, 只需在内存中记录操作,而不需要持久性)。
然后实例化事务处理器(继承transactionbase 提供了动作注册表和动作记录器。 默认事务处理器InteractiveTransaction执行任何操作 (与tx_process_action()一起发出),因此必须立即处理潜在的错误 因此。但是可以实现一个延迟所有操作的事务处理器 直到提交时间。
可以手动设置事务步骤(使用tx_commit()、tx_rollback()、savepoint方法..),但最好使用
事务处理器作为上下文管理器(
事务处理器在提交或回滚时自动开始新事务,以便可以重用它。
请注意,即使发生自动回滚,异常也不会被此系统吞噬。
transactionfailure的子类用于将链接到事务系统n的错误报告为异常。