可扩展事务系统,用于构建具有提交/回滚语义的工作流。

RSTransaction的Python项目详细描述


rstransaction是一个python2/python3工具箱,用于为任何类型的操作创建事务系统:内存、文件系统、远程存储…

它支持提交/回滚和保存点。

它从未在生产中使用过,但经过了很好的测试,并且易于扩展以支持不同的行为:立即或延迟操作、在崩溃时将操作记录到磁盘文件或数据库中、是否在错误时自动回滚…

安装

建议使用pip,尽管从存储库的签出处安装(通过setup.py)也可以工作:

$ pip install rstransaction

用法

你最好的办法是阅读资料(尤其是测试)。

其思想是使用TransactionalActionAdapter创建“原子”操作。 每个操作都知道如何操作、如何回滚自身,而且 如何对参数进行预处理,使其不含糊(例如 将相对文件名转换为绝对文件名)。

这些操作随后在TransactionalActionRegistry附近注册。

必须选择一个动作录制器(默认的,ActionRecorderBase, 只需在内存中记录操作,而不需要持久性)。

然后实例化事务处理器(继承transactionbase 提供了动作注册表和动作记录器。 默认事务处理器InteractiveTransaction执行任何操作 (与tx_process_action()一起发出),因此必须立即处理潜在的错误 因此。但是可以实现一个延迟所有操作的事务处理器 直到提交时间。

可以手动设置事务步骤(使用tx_commit()、tx_rollback()、savepoint方法..),但最好使用 事务处理器作为上下文管理器(使用关键字),以便在退出时自动发生完全提交/回滚。 事务处理器的“tx_savepoint”属性也可以用作上下文管理器,这次只作用于一个保存点。

事务处理器在提交或回滚时自动开始新事务,以便可以重用它。

请注意,即使发生自动回滚,异常也不会被此系统吞噬。

transactionfailure的子类用于将链接到事务系统n的错误报告为异常。

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

推荐PyPI第三方库


热门话题
使用概要文件后找不到java bean不确定原因   多线程如果信号量锁获取/tryAcquire失败,如何使Java线程执行不同的任务而不是阻塞?   java编译器在同一目录中找不到其他类   在Java中,如何检查表示时间戳的字符串是否为有效日期?   java Commons vfs FindFile虚拟文件   TomcatJava。util。计时器空指针异常   java是在Oracle和Vertica之间移动数据的有效方法   java Adobe Acrobat Reader无法打开pdf文件,因为该文件不是受支持的文件类型,或者该文件已损坏   java使用usb驱动程序libusb、usb4java ecc。。为什么它如此不受支持?   java如何在第二列或特定列中插入jface TreeViewer?   java通过internet发送对象并调用其方法   带超声波传感器的Esp32Cam   java Cassandra分页问题最后一页的分页状态不正确   Java/WildFly/MongoDB/JAAS身份验证始终返回403禁止