Уведомления

Группа в Telegram: @pythonsu

#1 Март 6, 2009 14:25:46

qq6ka
От:
Зарегистрирован: 2009-03-06
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с WSGI

Несколько 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()
Но rewr = request.get_host() не работает на реальном сервере. Собственно, в этом и вся проблема.
В примерах по работе с WSGI аdрес получается так: environ.get('HOST_NAME'), но переdать это значение на сравнение тоже не могу.



Отредактировано (Март 6, 2009 14:27:35)

Офлайн

#2 Март 6, 2009 14:35:41

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Помогите разобраться с WSGI

Так делать нельзя, работать не будет. Лучше сделать средствами веб-сервера виртхосты.



Офлайн

#3 Март 6, 2009 15:05:20

qq6ka
От:
Зарегистрирован: 2009-03-06
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с WSGI

почему не буdет?



Офлайн

#4 Март 6, 2009 15:34:00

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Помогите разобраться с WSGI

потому что django не thread-safe и у него python-wide конфигурация. Нет возможности без хитровывернутых костыхаков использовать в одном интерпретаторе два django-проекта c разными конфигами.

проще и надежнее разделить домены средствами сервера и голову не тренировать



Отредактировано (Март 6, 2009 15:35:52)

Офлайн

#5 Март 7, 2009 06:37:51

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Помогите разобраться с WSGI

j2a
и у него python-wide конфигурация.
Это как?



Офлайн

#6 Март 7, 2009 07:11:31

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Помогите разобраться с WSGI

Daevaorn
j2a
и у него python-wide конфигурация.
Это как?
в одном интерпретаторе нельзя сделать две конфигурации



Офлайн

#7 Март 7, 2009 07:15:28

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Помогите разобраться с WSGI

j2a
в одном интерпретаторе нельзя сделать две конфигурации
а почему?



Офлайн

#8 Март 7, 2009 08:21:33

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Помогите разобраться с WSGI

Daevaorn
j2a
в одном интерпретаторе нельзя сделать две конфигурации
а почему?
Потому что конфигурация (django.conf.settings) – объект уровня модуля. Без костылей и хаков ты не сможешь в соседних функциях/классах/модулях внутри одного процесса python использовать разные настройки.



Отредактировано (Март 7, 2009 08:23:48)

Офлайн

#9 Март 7, 2009 15:54:06

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Помогите разобраться с WSGI

Отлично. Только это не мешает автору топика разруливать сетинги на уровне 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)

Офлайн

#10 Март 8, 2009 13:59:52

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Помогите разобраться с WSGI

Daevaorn
Поскольку он не написал как wsgi приложение взаимодействует с веб сервером, то можно предположить, что вполне допустимо CGI-like использование. Тогда проблемы разделения сетингов проектами внитри процесса нет. Поскольку каждый новый запрос будт обрабатываться в новом процессе с выбраннымы для хоста данного запроса сетингами.

Но настройка именно такого взаимодействия на совести автора топика.
Формально ты прав



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version