Форум сайта python.su
Доброго всем времени суток.
Решил попробывать python как язык для web. Начитавшись умных статей и полазив по форумам понял в какую сторону копать.
Выбор пал на nginx фронтендом и тот самый быстрый сервер из cherrypy wsgi бекендом. Далее по порядку - установил nginx и cherrypy, обнаружил cherryd, попробывал запустить - все пошло норм, в консоль вывалилось что запустился он на порту 8080. Прописал правила проксирования в конфиге nginx, даже написал init скрипт для cherryd =), а дальше…
Тут видно сработали стереотипы, полученные от програмирования на php. Начал искать какое-нибудь подобие document_root у cherryd, чтобы попробывать положить туда чтонибудь вроде
def app(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return ['Hello World!\n']
Офлайн
в связи с отсутствием mod_wsgi и текучестью flup - вполне можно, я когда-то наткнулся на баг джанга + lighttpd и тоже запускал бекенд на чеии (да и до сих пор запускается)
в принципе у черри неплохой static server, для среднестатистического сайта должно хватить (это я к тому, что nginx можно убрать)
кстати
nulld4y:~# curl -I python.su
HTTP/1.1 200 OK
Vary: Cookie
Content-Type: text/html; charset=utf-8
Date: Wed, 09 Sep 2009 13:20:09 GMT
Server: CherryPy/3.1.1 WSGI Server
Офлайн
а что собственно делает cherryd, когда получает например GET /index.py ?
Офлайн
в нашем случае передаёт его джанге через wsgi )
а вообще на главной странице cherrypy есть пример кода ;)
если ты пользуешься cherryd - то ему надо передавать конфиг сайта
Офлайн
slav0nicНету у меня джанги еще=) хотелось поставить и написать что-то для примера, например как <? echo “hello world” ?> в пыхе, и собственно разобраться в том как оно работает )
в нашем случае передаёт его джанге через wsgi )
Офлайн
1) смотря какой скрипт, если ты пишешь для cherrypy - то оно будет работаьт только на нём, но на чери есть wsgiserver, который может запускать любые “скрипты” с поддержкой wsgi (в том числе и фреймворки аля django, pylons и тп). TurboGears раньше тоже юзал cherry
2) есть сервер wsgi есть сервер черри, первое занимает где-то 1.5к строк - остальное больше)
3)не обязательно, посмотри как работает mod_wsgi, хотя тут есть доля правды: при запуске скрипта через fcgi, scgi, flup (хрень содержащая всякие адаптеры для этих протоколов) запускает некий сервер Fcgi -> WSGI -> твой_код. В общем да, висит и ест память, но не обязательно является web-сервером
4) нет, вылетит эксепшн на странице, сервер не упадёт
в общем питон не php - тут нет такого, что в директорию кидают кучу скриптов *.py и делают по ним запросы (разве что если юзать CGI, но это прошлый век)
ты просто начал с изучения питона по вебсерверу (cherrypy), глянь webpy тотже, может проще будет понять, ну а потом уже читай про django, pylons etc
Офлайн
slav0nicСпасибо огромное за ответы. Теперь хоть ясно куда копать дальше)
в общем питон не php - тут нет такого, что в директорию кидают кучу скриптов *.py и делают по ним запросы (разве что если юзать CGI, но это прошлый век)
ты просто начал с изучения питона по вебсерверу (cherrypy), глянь webpy тотже, может проще будет понять, ну а потом уже читай про django, pylons etc
Офлайн
slav0nicС webpy у него возможно и отвращение появится :) и окончательно сломает мозг, особенно при работе с шаблонами.
ты просто начал с изучения питона по вебсерверу (cherrypy), глянь webpy тотже, может проще будет понять, ну а потом уже читай про django, pylons etc
emissaryВ wsgi как у нормального приложения есть точка входа, в которое передаются “аргументы” (environ - http://www.python.org/dev/peps/pep-0333/#environ-variables ) в зависимости от этих данных ты и строишь ответ серверу.
возможна ли работа подобной связки в привычном ( по крайней мере для меня ) понимании, вроде того что есть в /server/www куча файлов, статику отдает сам nginx, а например index.py с чистым wsgi ( как в примере выше) скриптом передает бекэнду, который в свою очередь его обрабатывает и возвращает?
emissary“cherryd” и есть веб сервер (точнее часть его, в твоем случае) предназначенный только для работы с протоколом wsgi, который ты “проксируешь” nginx`ом.
Или бекэнд это и есть работающий скрипт? зачем тогда отдельный cherryd? какой толк от его запуска?
Отредактировано (Сен. 11, 2009 21:09:42)
Офлайн