跳转到主要内容

管理自动更新和演变,这些更新和演变更适合在模式迁移之外使用

项目描述

tgext.evolve是一个用于通用迁移和演变的TurboGears2扩展。

tgext.evolve 在多进程和多线程环境中是安全的,因为它依赖于数据库上的分布式锁来执行演变。

在演变期间,应用程序将以 503 状态码响应,您可以自由配置TurboGears来捕获它并使用ErrorController提供自定义页面。

安装

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 ...
])

您可以使用配置文件中的 tgext.evolve.enabled = false 选项禁用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 或其他方式修改数据或接触数据库,您必须自己 flushcommit 您的 UnitOfWork 和 Transaction,因为演变是在事务管理器外部、在单独的线程中执行的。

然后,您可以使用类似以下方式注册您的演变:

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

如果您的演变需要参数,您可以注册其实例而不是注册类。

变更日志

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 的版本。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

tgext.evolve-0.0.5.tar.gz (5.3 kB 查看散列值)

上传时间

支持者