Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 9, 2010 13:16:17

Paher
От:
Зарегистрирован: 2009-08-11
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с wsgi

Добрый день, уважаемые!

Хочу перенести приложение на mod_wsgi + apache2.2. Приложение довольно простое, получает файл, парсит и заносит в базу. Почитал про технологию wsgi. Теоретически все понятно, но практически возникает несколько вопросов.

1. Не совсем понял, как настраивать httpd.conf. Допустим, у меня есть файл MyWSGI с функцией app(environ, start_response), которая и делает всю работу. В конфиге апача прописываем WSGIScriptAlias / /wsgi/MyWSGI. Как mod_wsgi узнает, что нужно вызывать именно функцию app? Практически все примеры в гугле даются для подключения django, а там, как я понял, есть специальные средства для связи по WSGI. А мне нужно простой скрипт связать.

2. Как я понял, при этой технологии приложение всегда находится в памяти, и при запросе выделяется отдельный процесс для его обработки. В связи с этим возникает вопрос: можно ли при инициализации приложения инициализировать общие для процессов ресурсы. Например, открыть соединение с БД, чтобы его использовали все процессы-потомки. Если можно, то как?

Буду благодарен за примеры, куски конфигов, ссылки на почитать(желательно на русском)



Офлайн

#2 Фев. 9, 2010 15:23:03

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Офлайн

#3 Фев. 9, 2010 15:24:24

Paher
От:
Зарегистрирован: 2009-08-11
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с wsgi

По поводу первого вопроса понял, функция должна иметь имя application вместо app. Второй вопрос остается в силе



Офлайн

#4 Фев. 9, 2010 16:03:28

Paher
От:
Зарегистрирован: 2009-08-11
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с wsgi

o7412369815963
пример подключения wsgi скрипта к апаче
судя по примеру все, что вне функции application - это общие настройки для всех процессов и там как раз и можно создать подключение к базе. я правильно понимаю?



Офлайн

#5 Фев. 9, 2010 16:15:39

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Работа с wsgi

там общие переменные для потоков, а не для процессов, а через wsgi их может быть несколько, т.е. глобальные(на все процессы) переменные тут не поиметь

Офлайн

#6 Фев. 9, 2010 16:28:23

Paher
От:
Зарегистрирован: 2009-08-11
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с wsgi

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



Офлайн

#7 Фев. 16, 2010 23:59:02

Paher
От:
Зарегистрирован: 2009-08-11
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с wsgi

Еще вопрос. Подскажите, пожалуйста, как работать с POST-переменными, переданными по wsgi-протоколу. Нигде не могу найти, как их выцепить их из environ



Офлайн

#8 Фев. 17, 2010 10:02:10

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Работа с wsgi

Paher
Еще вопрос. Подскажите, пожалуйста, как работать с POST-переменными, переданными по wsgi-протоколу. Нигде не могу найти, как их выцепить их из environ
используй какой-нибудь фреймворк, сейчас ты изобретаешь колесо.
вот например легкий микро фреймворк: http://bottle.paws.de/
а вот пример получения пост параметров: http://bottle.paws.de/page/docs#get-and-post-values

все просто и в 3 строки ;)

Офлайн

#9 Фев. 18, 2010 23:21:40

Paher
От:
Зарегистрирован: 2009-08-11
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с wsgi

Опытным путем выяснил, что можно работать через стандартный модуль cgi

form = cgi.FieldStorage(fp = environ, environ = environ)



Офлайн

#10 Фев. 19, 2010 07:10:45

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Работа с wsgi

Paher
Опытным путем выяснил, что можно работать через стандартный модуль cgi
bottle тоже использует эти стандартные модули, он обертка над штатными средствами.
а использовать гораздо удобнее
    query = request.POST['query']
query = request.GET['query']
query = request.COOKIE['query']
ЗЫ: представь как тебе нужно будет извратиться когда придется получить/установить куки или принять файл, а на многих фремвроках это делается одной строкой

Отредактировано (Фев. 19, 2010 07:12:13)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version