允许金字塔请求加入活动事务的包
pyramid_tm的Python项目详细描述
更改
2.2.1(2018-10-23)
- 支持Python3.7。
- 修复在使用 事务时的错误处理方法>;=2.4.0 。 请参见 https://github.com/pylons/pyramd_TM/pull/68
2.2(2017-07-03)
向后不兼容
对于使用 TM.提交否决权。其他人不受影响。
如果有任何挤压,现在将参考 tm.commit_veit 钩子 异常而不是总是中止。以前,如果出现异常 由异常视图处理时,事务将始终中止。 现在,提交否决权可以检查请求、异常和生成的 响应 以确定是提交还是中止。
使用金字塔时的新行为。默认的提交否决 如果出现以下任一情况,则可能会提交挤压异常 是真的:
- 响应包含设置为提交的x-tm头。
- 响应的状态代码不是以 4 或 5 开头的。
在大多数情况下,响应将导致4xx或5xx异常,并且 被中止-此行为保持不变。但是,如果 异常呈现3xx或2xx的响应(例如 金字塔.httpexceptions.httpfound ),则事务将 提交而不是中止。
2.1(2017-06-07)
- 在棱锥体上>;=1.7调用 将捕获并使用request.tm.abort和request.tm.commit 查找并执行异常视图以返回错误响应。这个 异常视图将与非活动事务管理器一起执行。 请参见 https://github.com/pylons/pyramd_TM/pull/61
2.0(2017-04-11)
主要功能
-
棱锥间被移到了外视图间。
这意味着事务在异常视图执行期间处于打开状态。
请参见
https://github.com/pylons/pyramd_TM/pull/55
-
添加了一个金字塔是活动的和一个视图谓词
在需要访问数据库的异常视图中可能很有用e.
请参见
https://github.com/pylons/pyramd_TM/pull/60
向后不兼容
- tm.attempts 设置已被删除,重试支持已被移动 进入一个名为 金字塔的新包重试。如果需要重试支持,则 有关安装和 启用它。请参见 https://github.com/pylons/pyramd_TM/pull/55
- 棱锥间被移到了外视图间。 如果您的应用程序中有任何黑客正在打开新事务 在您的异常视图中,您可能希望删除它们 或者在升级时重新评估。 请参见 https://github.com/pylons/pyramd_TM/pull/55
- 放下金字塔支架<;1.5.
次要功能
-
支持Python 3.6。
1.1.1(2016-11-21)
- 金字塔 1.1.0未能修复与不可编码相关的Unicode问题 请求路径。占位符消息不是Unicode。 请参见 https://github.com/pylons/pyramd_TM/pull/52
- 在主文档中包含更改。
1.1.0(2016-11-19)
- 支持 事务 2.x.
- 事务的请求路径和用户id现在由 首先解码为utf-8并返回到拉丁语-1。如果用户id 不符合这些限制,然后设置 tm.annotate_user=no 在你的设置中。请参见 https://github.com/pylons/pyramd_TM/pull/50
1.0.2(2016-11-18)
- pin to transaction<;1.99 因为金字塔当前与 新的2.x版本的事务。 请参见 https://github.com/pylons/pyram_TM/issues/49
1.0.1(2016-10-24)
- 当在 吐温。结果是这个中断的子请求以及 pshell 和 pyramid.paster.bootstrap cli脚本,特别是在使用 全局事务管理器,可以在tween之外跟踪。 请参见 https://github.com/pylons/pyramd_TM/pull/48
1.0(2016-09-12)
- 放弃对Python2.6、3.2和3.3的支持。
- 添加python 3.5支持。
- 如果在请求期间使用事务管理器,可能会出现细微的错误 其中, 棱锥体 通过 激活挂钩 禁用。为了对抗这些 尝试访问请求时出现的错误类型。tm 现在将引发 当金字塔不活动时,属性错误。 请参见 https://github.com/pylons/pyramd_TM/pull/46
0.12.1(2015-11-25)
- 再次修复与1.2和1.3的兼容性。这不是完全固定在 0.12发布,因为tween依赖于请求属性工作(它 它们不在旧版本的花呢里)。 请参见 https://github.com/pylons/pyram_TM/pull/39
0.12(2015-05-20)
- 公开 tm.annotate_user选项以避免计算 请求。未经验证的用户id探索。 请参见 https://github.com/pylons/pyramd_TM/pull/36
- 恢复与金字塔1.2和1.3的兼容性。
0.11(2015-02-04)
- 添加一个钩子来覆盖事务管理器的创建(默认 保持通过transaction.manager访问的线程本地。 请参阅: https://github.com/pylons/pyramd_TM/pull/31
0.10(2015-01-06)
- 修复用非文本、非字节用户ID记录事务的问题。 请参阅: https://github.com/pylons/pyramd嫒m/issues/28
0.9(2014-12-30)
- 解决记录包含Unicode的事务用户ID的问题。 请参见 https://github.com/pylons/pyramd_TM/pull/15 ,尽管修复了 是不同的,以确保python3的兼容性。
- 解决记录包含Unicode的事务注释的问题。 https://github.com/pylons/pyramd_TM/pull/25
0.8(2014-11-12)
- 添加一个新的 tm.激活钩子 事务管理器处于活动状态。例如,这在 应为特定URL禁用管理器的情况。 https://github.com/pylons/pyramd_TM/pull/12
- 将单元测试固定在金字塔1.5下。
- 修复一个错误,防止实际重试可重试的异常。 https://github.com/pylons/pyramd_TM/pull/8
- 如果没有用户登录,则不要在事务上调用setuser。 这可能会导致事务上设置的用户名奇怪 字符串:"无"。 https://github.com/pylons/pyramd_TM/pull/9
- 当无法从请求中解码路径信息时避免崩溃 对象。 https://github.com/pylons/pyramd_TM/pull/19
0.7(2012-12-30)
-
将未经身份验证的用户id和request.path\u info作为事务写入
元数据在提交期间分别通过
t.setuser 和 t.note 。
0.6(2012-12-26)
- 不使用令人困惑且充满错误的生成器和上下文管理器"尝试" 事务包中用于重试可重试异常的机制 (例如ZODB冲突错误)。使用一个简单的while循环加上一个计数器 而是命令逻辑。
0.5(2012-06-26)
错误修复
- 当由于调用 transaction.manager.commit ,异常未正确重新引发。 症状:不可恢复的异常,例如 不受支持:将blob存储在 &不支持lt;somestorage>;。 会被不适当地吞咽。
0.4(2012-03-28)
错误修复
- 解决提交时未能正确重试冲突错误的问题 事务 1.2.0包。见 https://mail.zope.org/pipermail/zodb dev/2012-march/014603.html 详细信息。
测试
-
不再通过
tox.ini
在Python2.5下进行测试(因此不再
由Pylons Jenkins服务器在2.5下测试)。包年龄可能仍然有效
低于2.5,但自动测试将不再显示破损
以打破2.5支撑的方式。
-
在Python3.2下压缩测试否决警告。
0.3(2011-09-27)
功能
-
事务管理器已转换为金字塔1.2"tween"
(而不是事件订阅服务器)。它将直接在
异常视图处理程序,这意味着它将有机会处理异常
在它们变成回应之前。这意味着最好是
httpfound(…)"而不是"return httpfound(…)"
中止事务时出现异常。
-
事务管理器现在将重试可重试的异常(例如zodb
冲突错误)如果
TM.尝试
配置为大于
默认值为
1
。请参见文档中的"重试"部分。
-
python 3.2兼容性(需要金字塔1.3dev+。
向后不兼容
与棱锥体不兼容<;1.2A1。使用0.2版金字塔 需要与旧的金字塔安装兼容。
不再配置默认的提交否决回调 默认情况下进入系统。使用否决权= 金字塔。在部署设置中添加默认的提交否决 。 这是用于与repoze.tm2的奇偶校验,它不在提交中配置 默认情况下也可以否决。
默认的提交否决权不再检查 试图确定事务是否 应中止(尽管它仍检查x-tm报头)。使用 如果应用程序依赖于 x-tm-abort头。
现在调用提交否决有两个参数: 请求 和 响应 。 请求是导致 要激活的事务管理器。 响应是 由金字塔应用程序返回。此呼叫签名不兼容 旧版本的。金字塔的呼叫信号 提交否决权接受三个参数: 环境 , 状态 ,以及 标题 。如果您使用的是自定义的提交否决功能,您将 需要转换现有函数以使用新调用 约定或使用包装器使其与新调用兼容 惯例。下面是一个简单的包装函数 ( bwcompat_commit_veto_wrapper )允许您使用现有的 自定义提交否决功能:
def bwcompat_commit_veto_wrapper(request, response): return my_custom_commit_veto(request.environ, response.status, response.headerlist)
折旧
- 金字塔提交否决配置设置现在是规范的 拼写为 tm.提交否决权。旧的拼写将继续工作, 但在使用时可能会引发弃用错误。
0.2(2011-07-18)
- 新的报头x-tm 否决权。如果headerList中存在此头,则其值必须是 字符串。如果其值为 commit ,则将提交事务 无论状态代码或x-tm-abort的值如何。如果值 x-tm头的 x-tm 是 中止 (或除 提交 ),事务将被中止,而不管状态代码是什么 或x-tm-abort的值。
0.1(2011-02-23)
- 初始版本,基于repoze.tm2