在不同版本的Django下运行两个Django应用程序

时间:2016-07-14 22:52:34

标签: django

我继承了在单个Django项目下有许多应用程序的情况。这些应用程序大多不相关,但仍然在同一个项目中。

该项目正在使用Django 1.6.4,我们希望升级到至少1.8以获得LTS版本。我想以受控的增量方式执行此操作 - 一次升级每个应用程序。

是否可以在两个不同版本的Django下运行两个独立的应用程序,两个版本都在同一个Django项目中。或者,我们唯一的选择是将每个应用程序分解为自己的项目,一次一个?

1 个答案:

答案 0 :(得分:2)

你不能(或者更好,你不应该),只有django的单一版本可以安全地阅读settings.py甚至相关的应用程序。如果允许两个单独版本的django读取并执行单个settings.py混乱可能会出现。

理论上,您可以添加额外的settings.py文件,注释掉某些应用程序(假设没有依赖项),并在同一个数据库上启动第二个django实例。但这就是问题。

例如,如果django版本之间的特定model.*Field执行方式稍有不同,则会遇到数据库不一致。一次升级所有应用程序可能比从同一个数据库表中读取/写入两个版本的django要安全得多。

换句话说,如果您100%确定可以创建两个settings.py个文件,其中一个包含应用A,另一个包含应用B INSTALLED_APPS,则不会显示单个应用settings.py ,然后你就安全了。我还没有看到一个django项目,应用程序之间的依赖关系允许在两组应用程序中干净地分离它,但是,如果你可以在项目中管理它,你可以安全地启动两个django实例(每个都有不同的版本)将正确的setting.py传递给每个人。

基本上:

  

应用程序大多不相关

“大部分”这个词是杀死它的。

另一方面,您始终可以选择复制数据库并制作两个django项目,每个项目都连接到一个数据库实例。

然后,您可以在稍后将丢弃的数据库上自由测试新版本的django。这是升级更安全的选择。