Уведомления

Группа в Telegram: @pythonsu

#1 Май 28, 2012 10:54:17

Nowak
Зарегистрирован: 2012-05-28
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

wsgi и CGI

Здравствуйте. Начал разбираться с питоном для веб и не могу понять, если хостер предлагает для питона только CGI, то использование wsgi ситуацию с быстродействием не улучшит? Просто во всех доках и книгах, которые мне попались, рассматривается именно взаимодействие wsgi и CGI? Или фишка как раз в том что с помощью wsgi и на CGI можно добиться нормального быстродействия? Я запутался.

Офлайн

#2 Май 28, 2012 19:19:38

newca9h
Зарегистрирован: 2012-05-28
Сообщения: 46
Репутация: +  3  -
Профиль   Отправить e-mail  

wsgi и CGI

Здравствуйте! Если хостер предлагает только CGI, значит wsgi здесь попросту нет. Иными словами, у него не стоит mod_wsgi. Можете использовать CGI, но лучше будет найти другого хостера. На счёт быстродействия, здесь зависит от Вашего приложения(насколько оно хорошо написано), а также от самого сервера(насколько он быстрый). На счёт взаимодействия CGI и WSGI. По сути, WSGI может работать и без подключения CGI модуля и здесь уже выбор за Вами. CGI модуль стандартной библиотеки имеет несколько удобных плюшек, например cgi.FieldStorage для разбора данных форм, но их можно разобрать и без него. Советую почитать вот это:
Why so many Python web frameworks?
webpython
Getting-started-with-wsgi

Всё на английском, но если с этим проблема, то по коду всё довольно ясно.)

Ещё рекомендую поизучать ту же Django. Для старта она прекрасно подходит. Изучайте её код. Там много поясняющих комментариев и код очень хорошо написан.

Так же советую глянуть в сторону Python Paste. Это очень хорошая библиотека, в которой есть много всего интересного, например разного рода авторизации и прочее.)

Забыл добавить.

cgi - это примерно так:

print 'Content-type: text/html\r'
print '\r'
print 'Hello World!'

То есть, мы можем писать хоть как, а WSGI обязывает использовать такой формат:

def hello(environ, start_response):
    start_response('200 OK', [('Content-type', 'text/html')])
    return ['Hello World!']

То есть, environ это словарь с параметрами окружения(почти такой же как и в cgi). А start_response это функция, которая принимает код ответа(в нашем случае 200 OK) и HTTP-заголовки(в нашем случае Content-type: text/html). Таким образом, мы видим стандартизированный интерфейс, который позволяет нам подключать любые приложения, удовлетворяющие этому стандарту. Вся соль в этом.

Отредактировано newca9h (Май 28, 2012 19:43:23)

Офлайн

#3 Май 28, 2012 19:33:03

Nowak
Зарегистрирован: 2012-05-28
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

wsgi и CGI

newca9h
Здравствуйте! Если хостер предлагает только CGI, значит wsgi здесь попросту нет. Иными словами, у него не стоит mod_wsgi. Можете использовать CGI, но лучше будет найти другого хостера. На счёт быстродействия, здесь зависит от Вашего приложения(насколько оно хорошо написано), а также от самого сервера(насколько он быстрый). На счёт взаимодействия CGI и WSGI. По сути, WSGI может работать и без подключения CGI модуля и здесь уже выбор за Вами. CGI модуль стандартной библиотеки имеет несколько удобных плюшек, например cgi.FieldStorage для разбора данных форм, но их можно разобрать и без него. Советую почитать вот это:
Why so many Python web frameworks?
webpython
Getting-started-with-wsgi

Всё на английском, но если с этим проблема, то по коду всё довольно ясно.)

Ещё рекомендую поизучать ту же Django. Для старта она прекрасно подходит. Изучайте её код. Там много поясняющих комментариев и код очень хорошо написан.

Так же советую глянуть в сторону Python Paste. Это очень хорошая библиотека в которой есть много всего интересного, например разного рода авторизации и прочее.)
Если я правильно понял, то для написания сайта на Python FastCGI и wsgi - это желательно, но не обязательно, а чтобы вполне адекватный по скорости сайт запустить, то достаточно хостинга с CGI?

Например мне надо сделать сайт для кафе с возможностью заказа и доставки обеда, плюс резервирование столиков. Следует поискать хостинг с FastCGI, или wsgi, или брать с CGI и не париться?

Офлайн

#4 Май 28, 2012 19:54:07

newca9h
Зарегистрирован: 2012-05-28
Сообщения: 46
Репутация: +  3  -
Профиль   Отправить e-mail  

wsgi и CGI

Здесь зависит от количества посетителей на сайте. Цитируя википедию(

Недостаток CGI-программ в том, что они должны быть перезапущены веб-сервером при каждом запросе, что приводит к понижению производительности
) можно сделать выводы. Вообще, Вам можно использовать Django для таких решений. Писать на ней просто и самое главное быстро. Развернуть на сервере можно и без wsgi/fastcgi/mod_python, но тормозить будет жутко. И здесь встаёт другой вопрос. Если Вы ограничены в средствах и хостинг, ну никак нельзя поменять, то можете написать на том же PHP(я думаю там он поддерживается) и не заморачиваться по этим wsgi и прочим. Выбор инструмента ведь за специалистом и здесь PHP лучше подойдёт(на мой взгляд). Если же со средствами нет проблем(тем более, что другой хостинг не на много дороже, если вообще дороже), то пишите с использованием WSGI, так как другой программист(или Вы через какое-то время) скажет Вам спасибо за использование понятного всем стандарта, а не своего велосипеда, который ещё и нужно собрать, настроить, защитить и т.д.

Ещё забыл добавить. Помните о том, что сайт может вырасти и тогда придётся:
  • 1. Переписывать
    2. Создавать костыли

Отредактировано newca9h (Май 28, 2012 20:08:44)

Офлайн

#5 Май 28, 2012 20:16:18

Nowak
Зарегистрирован: 2012-05-28
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

wsgi и CGI

newca9h
Здесь зависит от количества посетителей на сайте. Цитируя википедию(
Недостаток CGI-программ в том, что они должны быть перезапущены веб-сервером при каждом запросе, что приводит к понижению производительности
) можно сделать выводы. Вообще, Вам можно использовать Django для таких решений. Писать на ней просто и самое главное быстро. Развернуть на сервере можно и без wsgi/fastcgi/mod_python, но тормозить будет жутко. И здесь встаёт другой вопрос. Если Вы ограничены в средствах и хостинг, ну никак нельзя поменять, то можете написать на том же PHP(я думаю там он поддерживается) и не заморачиваться по этим wsgi и прочим. Выбор инструмента ведь за специалистом и здесь PHP лучше подойдёт(на мой взгляд). Если же со средствами нет проблем(тем более, что другой хостинг не на много дороже, если вообще дороже), то пишите с использованием WSGI, так как другой программист(или Вы через какое-то время) скажет Вам спасибо за использование понятного всем стандарта, а не своего велосипеда, который ещё и нужно собрать, настроить, защитить и т.д.
Использовать конечно можно и РНР, но хотелось бы Python. Проблема в хостинге. Для РНР пользуюсь hostpro.ua, но там Python только через CGI, если что-то большее, то надо брать VDS, а заказчику и нафиг не надо переплачивать, мои эстетические соображения для него не играют в данном случае роли. В Украине, кроме tophost.com.ua, с Python ни чего не встречал, но у них дороговато в сравнении с РНР.

Офлайн

#6 Май 28, 2012 20:40:26

newca9h
Зарегистрирован: 2012-05-28
Сообщения: 46
Репутация: +  3  -
Профиль   Отправить e-mail  

wsgi и CGI

Тогда два варианта:

  • 1. Попробовать и посмотреть, что выйдет.
    2. А если российский/другая страна хостинг за те же деньги найти?

Если мельком глянуть на Ваше сообщение:
Например мне надо сделать сайт для кафе с возможностью заказа и доставки обеда, плюс резервирование столиков

То здесь можно в двух/трёх функциях всё написать. Одна выводит шаблоны. Вторая сохраняет в sqllite заказы. Ну и нужен интерфейс для просмотра поступивших заказов(это уже другой момент).

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version