2012-02-01 31 views
0

我的django項目包含許多應用程序,庫和中間件。我想在不同的虛擬主機上運行這個項目的不同配置(因爲不同的用例和需求,例如:一個用戶,一個用於M2M API等)。從this問題,據我所知,它不應該是舉辦這個,只要我有獨立的WSGI引導文件有問題,但我不明白爲什麼以下行:承載多個VirtualHost實例

os.environ['DJANGO_SETTINGS_MODULE'] = 'site1.settings' 

不會導致錯誤同時部署。如果我有幾個帶有自己的wsgi配置文件的虛擬主機,它們都設置了DJANGO_SETTINGS_MODULE系統變量,是不是它們會覆蓋對方的設置?

此設置是否在每個請求中「即時」更改?在那種情況下,是否有更有效的方式來處理這種多主機設置?

謝謝,

回答

1

Django的安裝都有自己的python範圍。這意味着site1的變量在site2中不可用。這與兩個python shell相同。您無法訪問其他環境。

因此,您有兩個正在運行的項目實例。一個用於site1,另一個用於site2。

我也以這種方式處理我的安裝,但我可以想象,只使用一個安裝並在子頁面中提供apis之類的東西會更好。但我不知道,對於演出來說是否更好。

+0

是的,默認情況下,每個WSGI應用程序在一個進程中都有它自己的子解釋器。隔離並不總是完美的,但通常是有效的。爲了獲得最佳隔離效果,最好使用WSGIDaemonProcess/WSGIProcessGroup組合,爲每個WSGI應用程序使用單獨的mod_wsgi守護進程組。 – 2012-02-02 12:34:37