Найти - Пользователи
Полная версия: Помогите разобраться с WSGI
Начало » Web » Помогите разобраться с WSGI
1 2
qq6ka
Несколько 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ать это значение на сравнение тоже не могу.
j2a
Так делать нельзя, работать не будет. Лучше сделать средствами веб-сервера виртхосты.
qq6ka
почему не буdет?
j2a
потому что django не thread-safe и у него python-wide конфигурация. Нет возможности без хитровывернутых костыхаков использовать в одном интерпретаторе два django-проекта c разными конфигами.

проще и надежнее разделить домены средствами сервера и голову не тренировать
Александр Кошелев
j2a
и у него python-wide конфигурация.
Это как?
j2a
Daevaorn
j2a
и у него python-wide конфигурация.
Это как?
в одном интерпретаторе нельзя сделать две конфигурации
Александр Кошелев
j2a
в одном интерпретаторе нельзя сделать две конфигурации
а почему?
j2a
Daevaorn
j2a
в одном интерпретаторе нельзя сделать две конфигурации
а почему?
Потому что конфигурация (django.conf.settings) – объект уровня модуля. Без костылей и хаков ты не сможешь в соседних функциях/классах/модулях внутри одного процесса python использовать разные настройки.
Александр Кошелев
Отлично. Только это не мешает автору топика разруливать сетинги на уровне 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)
j2a
Daevaorn
Поскольку он не написал как wsgi приложение взаимодействует с веб сервером, то можно предположить, что вполне допустимо CGI-like использование. Тогда проблемы разделения сетингов проектами внитри процесса нет. Поскольку каждый новый запрос будт обрабатываться в новом процессе с выбраннымы для хоста данного запроса сетингами.

Но настройка именно такого взаимодействия на совести автора топика.
Формально ты прав
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB