交易实用性

nti.transactions的Python项目详细描述


https://coveralls.io/repos/github/NextThought/nti.transactions/badge.svg?branch=masterhttps://travis-ci.org/NextThought/nti.transactions.svg?branch=master

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 (使用fullput_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)

  • TransactionLoopTypeError,它保留原始消息。
  • 对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,当由于 系统错误。

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

推荐PyPI第三方库


热门话题
java只在最新的异步更新数据上运行计算   ADT更新后Eclipse中的java问题   java spring数据jpa无法插入   java在安卓游戏中放置主游戏循环的位置   java如何处理从相机保存图像时的错误?   Java字符串作为路径的一部分   带preparedStatement的java sql Select*   AutoClose HttpURLConnection与JAVA中的DB连接相同(使用tryWithResources)   javascript HtmlUnit试图获取加载了脚本的某些字段的网页的html的大型异常日志   如何识别批处理文件是否在java中执行?   java用arraylist填充可滚动的JList   java文本到语音功能在我的Listview中不起作用   java侦听Firebase Firestore数据库中的元数据更改   java奇怪的类型转换((ClassPathXmlApplicationContext)上下文)。close();   当包含CQ5组件时,java无法创建cq节点   具有Junit测试用例的Java项目   java如何启动和运行网格   javascript如何在不重新加载页面的情况下更新jsp页面上的变量?