2016-07-14 84 views
1

我繼承了在單個Django項目下有大量應用程序的情況。這些應用大多不相關,但仍在同一個項目中。在Django的不同版本下運行兩個Django應用程序

該項目使用的是Django 1.6.4,我們希望升級到至少1.8以獲得LTS版本。我想以一種可控的,漸進式的方式來做到這一點 - 每次升級每個應用程序。

是否有可能在兩個單獨的Django版本下運行兩個獨立的應用程序,這兩個應用程序都在同一個Django項目中。或者,我們唯一的選擇是每次將每個應用分成自己的項目嗎?

回答

1

你不能(或者更好,你不應該),只有單一版本的django可以安全地閱讀settings.py,甚至有些相關的應用程序。如果你允許Django的兩個單獨版本讀取和執行一個單獨的文件,可能會出現混亂。

理論上,您可以添加額外的settings.py文件,註釋掉某些應用程序(因爲沒有依賴關係),並在同一數據庫上引導第二個django實例。但那是在問問題。

例如,如果某個特定的model.*Field在django版本之間執行方式稍有不同,那麼您將遇到數據庫不一致。從同一個數據庫表中讀取/寫入兩個版本的django可能比一次升級所有應用程序要安全得多。

換句話說,如果你是100%肯定,你可以創建兩個文件settings.py與一個應用程序A和另一個與INSTALLED_APPS應用B和不是一個單一的應用程序會出現在settings.py,那麼你是安全的。我還沒有看到一個django項目,即應用程序之間的依賴關係將允許將它分成兩組應用程序,但是,如果您可以在項目中管理它,則可以安全地啓動兩個django實例(每個實例都有不同的版本)將正確的setting.py傳遞給每個。

基本上是:

這些應用大多是無關的 「大多是」

的字有什麼殺死它。


在另一方面,你總是有使數據庫的副本,並做兩個Django的項目,每一個連接到一個數據庫實例的選項。

然後,您可以隨後在數據庫上自由測試django的新版本,稍後您將丟棄該數據庫。這對升級來說是一個更安全的選擇。

相關問題