用于维护与Django版本发布前兼容性的工具。
项目描述
在部署大型网站时,运维团队有时会在整个服务器集合的子集上部署新代码。这种做法称为“金丝雀”部署。大多数用户将继续使用旧代码提供服务;只有那些击中“金丝雀”机器的用户才会看到新代码。
大型网站通常在升级风险感知较高时使用“金丝雀”。例如,在一个复杂网站上从1.8 LTS升级到1.11 LTS的Django版本通常被认为是一个有风险的升级;使用金丝雀来测试升级是否按预期工作,在将所有web服务器切换到升级后的代码库之前。
不幸的是,虽然Django有良好的向后兼容性保证,但金丝雀部署还需要向前兼容性。这是因为用户可能在新的代码库上服务一个请求,但随后的更新可能来自旧的代码库。如果信息(如安全令牌)在版本之间既不向后也不向前兼容,一些用户在在新旧代码库之间来回移动时将看到错误。
Birdcage是一个项目,包括一些工具,可以帮助您管理金丝雀升级,通过为Django中已知问题提供向前兼容的垫片。
鸟笼解决什么问题?
Django 1.10:加盐的CSRF令牌
Django 1.10 引入了CSRF处理的变化,以抵御 BREACH 攻击。Django 1.10+可以解析Django < 1.10 CSRF令牌;然而,如果用户被分配了Django 1.10+ CSRF令牌,它将由于无效而被Django 1.8拒绝。
为了解决这个问题,Birdcage提供了一个可以解析Django 1.10 CSRF令牌的Django 1.8的CsrfViewMiddleware版本。
在您的Django 1.8代码库的设置中,将您的 MIDDLEWARE 设置中的 django.middleware.csrf.CsrfViewMiddleware 替换为 birdcage.v1_11.csrf.CsrfViewMiddleware。
在您的Django 1.10+代码库中,继续使用Django CsrfViewMiddleware。
为什么它被称为Birdcage?
嗯,你必须把你的金丝雀放在某个地方来保护它们……:-)
django-birdcage-1.0.0.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | b0c60fae6092f99134b7e66f1ce4619ff3ffa74a79baf5b59f6ab54fc92f7dec |
|
MD5 | b5ebf1dc24ebf6f551f2896d3c2199ca |
|
BLAKE2b-256 | 3ca87d7c806cadd112fdaffb9ca046278d2a0694c7d41396c8e182598ff6403f |
django_birdcage-1.0.0-py2.py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | a8352df78df0c58d8ee9ce453abb02e18cfc630045fb6fe8b16fa436aeab94c7 |
|
MD5 | d5deb68a5d2375320cc2c705d7ed5646 |
|
BLAKE2b-256 | 11e1449eafcb72ca77c8b671beead1fbd904a7cc616ed6d094dcb7b8beed8314 |