管理更适合外部模式迁移的自动更新和演进

tgext.evolve的Python项目详细描述


evolve是一个TurboGears2扩展,用于一般迁移和演化

tgext.evolve可以安全地用于多处理和多线程环境 因为它依赖于数据库上的分布式锁来执行演进。

在演化期间,应用程序将用503状态代码响应, 您可以随意配置TurboGears来捕获它,并使用您的错误控制器来提供 自定义页。

安装

tgext.evolve可以从pypi安装:

pip install tgext.evolve

应该只对大多数用户有效。

启用

在应用程序中启用tgext.evolve config/app_cfg.py以下各项:

import tgext.evolve
tgext.evolve.plugme(base_config, options={
    'evolutions': [
        # ... Your evolutions ...
    ]
})

或者您可以使用tgext.pluggable当可用时:

from tgext.pluggable import plug
plug(base_config, 'tgext.evolve', evolutions=[
    # ... Your evolutions ...
])

然后可以使用^{tt3}禁用tgext.evolve$ 配置文件中的选项在测试套件中经常出现这种情况

使用进化

进化是tgext.evolve.Evolution的一个子类 必须提供evolution_id属性和evolve() 方法

下面是一个不需要等待10秒的示例演进:

import time
from tgext.evolve import Evolution

class TestEvolution1(Evolution):
    evolution_id = 'test_evolution_1'

    def evolve(self):
        time.sleep(10)

请注意,如果您修改数据或触摸数据库 通过model.DBSession或其他方式,您必须flush 以及commit您的工作单元和事务本身作为演进 在事务管理器外部的独立线程中执行。

然后你就可以用这样的东西来记录你的进化:

from tgext.pluggable import plug
plug(base_config, 'tgext.evolve', evolutions=[
    TestEvolution1
])

如果你的进化需要参数,你可以注册一个 它的实例,而不是注册类

注意

没有与evolve()方法相反的方法,因为没有 保证进化是可逆的。如果你需要的话 数据库架构的可逆迁移请使用 架构迁移框架。

更改日志

0.0.5

  • 小错误修复和抨击园艺

0.0.4

  • 小型python3兼容性修复程序

0.0.3

  • 对SQLAlchemy的实验性支持,在SQLite和MySQL上进行了测试

0.0.2

  • 允许在.ini文件中使用tgext.evolve.enabled = False禁用tgext.evolve

0.0.1

  • 只支持MongoDB/Ming的第一个版本。

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

推荐PyPI第三方库


热门话题
java如何将向量的内容从一个包发送到另一个包?   java无法扩展类并对ArrayList进行排序   java无法对字符串的ArrayList进行排序   JavaP:ajax更改事件请求返回500错误   java如何为TableHeader使用渲染器   带有记号的java JSlider问题   Java如何在不同的类中调用add()方法   java如何使用JDBC和HSQLDB检索以前自动生成的PK ID值   java如何使dropwizard应用程序在启动完成之前忽略所有调用   使用MethodValidationPostProcessor进行java Spring验证   java Mediaplayer错误(19 0)不适用于release()   java UnsatifiedPendencyException Swigger2+Sringboot+@RestClientTest   java如何从onActivityResult更新回收器视图元素   java基于图像添加地板或如何优化已有方法   jComboBox的java奇怪行为   java从数据库表php中提取信息   Android-sqlite更新方法;JAVAlang.IllegalStateException:无法执行活动的方法   java如何将多个XSD文件合并到一个XSD文件?   java在不使用大多数API的情况下消除空格