交易实用性
nti.transactions的Python项目详细描述
transaction包的扩展。
事务管理器
nti.transactions.transactions.TransactionsLoop是可重试的 事务管理器。它在概念上类似于attempts 上下文管理器由事务包本身提供,但是 通过子类更加强大和可扩展。功能包括:
- 可配置的提交兽医。
- 应重试异常的可扩展测试。
- 中止事务并绕过潜在的 在预期没有副作用的情况下进行昂贵的提交。
- 在两次尝试之间睡觉。
- 广泛的日志记录和计时。
transactionloop可以按原样使用,也可以为 定制。例如,用在金字塔中间的 子类可能如下:
>>> class PyramidTransactionLoop(TransactionLoop): ... def prep_for_retry(self, number, request): ... request.make_body_seekable() ... def describe_transaction(self, request): ... return request.url
数据管理器
为了方便起见,提供了一些data managers。
第一个数据管理器用于将对象放入queue (使用full和put_nowait方法的内容)当 交易成功。如果队列已满,则事务将 不允许提交:
>>> from nti.transactions.transactions import put_nowait >>> put_nowait(queue, object)
这是ObjectDataManager的特例,它将调用 事务提交时具有任何参数的方法。可能是 配置为对是否应允许提交事务进行投票。 或者不。例如,当 交易成功。它可以直接构建,但是 do函数是将一个连接到当前 交易:
>>> from nti.transactions.transactions import do >>> do(print, args=("Committed"))
小心!
请参阅此对象的文档以了解 关于副作用及其与 交易机制。小心使用!
更改
2.0.0(2018-07-20)
- 在事务2.2中使用新的publicisRetryableError。这个 这个包的接口没有改变,但是 一个依赖性需要一个重大的肿块在这里。见issue 12。
- 对Python3.7的测试支持;删除对Python3.4的测试支持。
- TransactionLoop更注意不要保留回溯对象 尤其是在python 2上。
1.1.1(2018-07-19)
- 当TransactionLoop从 TypeError,它保留原始消息。
- 对Python3.6的测试支持。
1.1.0(2017-04-17)
- 添加一个新的objectdatamanager,它将在 其他对象数据管理器。
1.0.0(2016-07-28)
- 添加对Python3的支持。
- 消除zodb依赖。而不是提出 ZODB.POSException.StorageError表示意外的TypeErrors 在提交期间,新类 nti.transactions.interfaces.CommitFailedError已筹集。
- 引入一个新的TransactionError子类, AbortFailedError,当由于 系统错误。