Форум сайта python.su
Несколько dоменов привязано к оdному сайту.
Нужно в заисимости от dомена запра6ивать нужное приложение.
Пробую так:
import os, sys
import django.core.handlers.wsgi
sys.path.append('/home/mister/www/site1/public_html/')
rewr = request.get_host()
if rewr == "www.dom1.ru":
os.environ['DJANGO_SETTINGS_MODULE'] = 'dom1.settings'
else:
os.environ['DJANGO_SETTINGS_MODULE'] = 'dom2.settings'
application = django.core.handlers.wsgi.WSGIHandler()
Отредактировано (Март 6, 2009 14:27:35)
Офлайн
Так делать нельзя, работать не будет. Лучше сделать средствами веб-сервера виртхосты.
Офлайн
почему не буdет?
Офлайн
потому что django не thread-safe и у него python-wide конфигурация. Нет возможности без хитровывернутых костыхаков использовать в одном интерпретаторе два django-проекта c разными конфигами.
проще и надежнее разделить домены средствами сервера и голову не тренировать
Отредактировано (Март 6, 2009 15:35:52)
Офлайн
j2aЭто как?
и у него python-wide конфигурация.
Офлайн
Daevaornв одном интерпретаторе нельзя сделать две конфигурацииj2aЭто как?
и у него python-wide конфигурация.
Офлайн
j2aа почему?
в одном интерпретаторе нельзя сделать две конфигурации
Офлайн
DaevaornПотому что конфигурация (django.conf.settings) – объект уровня модуля. Без костылей и хаков ты не сможешь в соседних функциях/классах/модулях внутри одного процесса python использовать разные настройки.j2aа почему?
в одном интерпретаторе нельзя сделать две конфигурации
Отредактировано (Март 7, 2009 08:23:48)
Офлайн
Отлично. Только это не мешает автору топика разруливать сетинги на уровне wsgi адаптера. Я к этому и вел.
Поскольку он не написал как wsgi приложение взаимодействует с веб сервером, то можно предположить, что вполне допустимо CGI-like использование. Тогда проблемы разделения сетингов проектами внутри процесса нет. Поскольку каждый новый запрос будeт обрабатываться в новом процессе с выбранными для хоста данного запроса сетингами.
Но настройка именно такого взаимодействия на совести автора топика.
А код следует чуть-чуть изменить:
import os, sys
import django.core.handlers.wsgi
sys.path.append('/home/mister/www/site1/public_html/')
def application(environ, start_response):
host = environ["SERVER_NAME"]
if host == "www.dom1.ru":
os.environ['DJANGO_SETTINGS_MODULE'] = 'dom1.settings'
else:
os.environ['DJANGO_SETTINGS_MODULE'] = 'dom2.settings'
return django.core.handlers.wsgi.WSGIHandler()(environ, start_response)
Отредактировано (Июль 17, 2009 14:58:44)
Офлайн
DaevaornФормально ты прав
Поскольку он не написал как wsgi приложение взаимодействует с веб сервером, то можно предположить, что вполне допустимо CGI-like использование. Тогда проблемы разделения сетингов проектами внитри процесса нет. Поскольку каждый новый запрос будт обрабатываться в новом процессе с выбраннымы для хоста данного запроса сетингами.
Но настройка именно такого взаимодействия на совести автора топика.
Офлайн