Paher
Фев. 9, 2010 13:16:17
Добрый день, уважаемые!
Хочу перенести приложение на mod_wsgi + apache2.2. Приложение довольно простое, получает файл, парсит и заносит в базу. Почитал про технологию wsgi. Теоретически все понятно, но практически возникает несколько вопросов.
1. Не совсем понял, как настраивать httpd.conf. Допустим, у меня есть файл MyWSGI с функцией app(environ, start_response), которая и делает всю работу. В конфиге апача прописываем WSGIScriptAlias / /wsgi/MyWSGI. Как mod_wsgi узнает, что нужно вызывать именно функцию app? Практически все примеры в гугле даются для подключения django, а там, как я понял, есть специальные средства для связи по WSGI. А мне нужно простой скрипт связать.
2. Как я понял, при этой технологии приложение всегда находится в памяти, и при запросе выделяется отдельный процесс для его обработки. В связи с этим возникает вопрос: можно ли при инициализации приложения инициализировать общие для процессов ресурсы. Например, открыть соединение с БД, чтобы его использовали все процессы-потомки. Если можно, то как?
Буду благодарен за примеры, куски конфигов, ссылки на почитать(желательно на русском)
o7412369815963
Фев. 9, 2010 15:23:03
Paher
Фев. 9, 2010 15:24:24
По поводу первого вопроса понял, функция должна иметь имя application вместо app. Второй вопрос остается в силе
Paher
Фев. 9, 2010 16:03:28
o7412369815963
пример подключения wsgi скрипта к апаче
судя по примеру все, что вне функции application - это общие настройки для всех процессов и там как раз и можно создать подключение к базе. я правильно понимаю?
o7412369815963
Фев. 9, 2010 16:15:39
там общие переменные для потоков, а не для процессов, а через wsgi их может быть несколько, т.е. глобальные(на все процессы) переменные тут не поиметь
Paher
Фев. 9, 2010 16:28:23
Ну, собственно, неправильно выразился. Мне как раз и нужно одно подключение для потоков, а не процессов. а это, как я понял, возможно установить вне функции application. спасибо огромное
Paher
Фев. 16, 2010 23:59:02
Еще вопрос. Подскажите, пожалуйста, как работать с POST-переменными, переданными по wsgi-протоколу. Нигде не могу найти, как их выцепить их из environ
o7412369815963
Фев. 17, 2010 10:02:10
Paher
Еще вопрос. Подскажите, пожалуйста, как работать с POST-переменными, переданными по wsgi-протоколу. Нигде не могу найти, как их выцепить их из environ
используй какой-нибудь фреймворк, сейчас ты изобретаешь колесо.
вот например легкий микро фреймворк:
http://bottle.paws.de/а вот пример получения пост параметров:
http://bottle.paws.de/page/docs#get-and-post-valuesвсе просто и в 3 строки ;)
Paher
Фев. 18, 2010 23:21:40
Опытным путем выяснил, что можно работать через стандартный модуль cgi
form = cgi.FieldStorage(fp = environ, environ = environ)
o7412369815963
Фев. 19, 2010 07:10:45
Paher
Опытным путем выяснил, что можно работать через стандартный модуль cgi
bottle тоже использует эти стандартные модули, он обертка над штатными средствами.
а использовать гораздо удобнее
query = request.POST['query']
query = request.GET['query']
query = request.COOKIE['query']
ЗЫ: представь как тебе нужно будет извратиться когда придется получить/установить куки или принять файл, а на многих фремвроках это делается одной строкой