2012-02-01 3 views
0

Мой проект django состоит из множества приложений, библиотек и промежуточного программного обеспечения. Я хотел бы запускать различные конфигурации этого проекта на разных виртуальных хостах (из-за различных вариантов использования и потребностей, например: один для пользователей, один для M2M api и т. Д.). Из this вопроса я понимаю, что это не должно быть проблемой для размещения этого, до тех пор, как у меня есть отдельный WSGI бутстраповских файлы, но я не понимаю, почему следующая строка:Хостинг нескольких виртуальных экземпляров VirtualHost

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

не вызывает ошибку с одновременное развертывание. Если у меня есть несколько виртуальных хостов с их собственными конфигурационными файлами wsgi, все из которых устанавливают системную переменную DJANGO_SETTINGS_MODULE, не переписывают ли они друг друга?

Установлен ли этот параметр «точно в срок» по каждому запросу? В этом случае существует ли более эффективный способ работы с такой настройкой нескольких хостов?

Спасибо,

ответ

1

В Джанго-установки имеют свой питон-сферу. Это означает, что переменные site1 недоступны в site2. Это то же самое, что два python-shells. Вы не можете получить доступ к окружающим средам.

Итак, у вас есть два работающих экземпляра вашего проекта. Один для сайта1 и один для сайта2.

Я также обрабатываю свои установки таким образом, но могу себе представить, что было бы лучше использовать только одну установку и предлагать такие вещи, как apis, в подстранице. Но я не знаю, важно ли это для производительности.

+0

Да, по умолчанию каждое приложение WSGI получает собственный суб-интерпретатор в рамках процесса. Изоляция не всегда идеальна, но обычно работает. Для лучшей изоляции лучше использовать отдельную группу процессов демона mod_wsgi для каждого приложения WSGI, используя WSGIDaemonProcess/WSGIProcessGroup в комбинации. –