Найти - Пользователи
Полная версия: wsgi и CGI
Начало » Web » wsgi и CGI
1
Nowak
Здравствуйте. Начал разбираться с питоном для веб и не могу понять, если хостер предлагает для питона только CGI, то использование wsgi ситуацию с быстродействием не улучшит? Просто во всех доках и книгах, которые мне попались, рассматривается именно взаимодействие wsgi и CGI? Или фишка как раз в том что с помощью 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. Это очень хорошая библиотека, в которой есть много всего интересного, например разного рода авторизации и прочее.)

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

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). Таким образом, мы видим стандартизированный интерфейс, который позволяет нам подключать любые приложения, удовлетворяющие этому стандарту. Вся соль в этом.
Nowak
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 и не париться?
newca9h
Здесь зависит от количества посетителей на сайте. Цитируя википедию(
Недостаток CGI-программ в том, что они должны быть перезапущены веб-сервером при каждом запросе, что приводит к понижению производительности
) можно сделать выводы. Вообще, Вам можно использовать Django для таких решений. Писать на ней просто и самое главное быстро. Развернуть на сервере можно и без wsgi/fastcgi/mod_python, но тормозить будет жутко. И здесь встаёт другой вопрос. Если Вы ограничены в средствах и хостинг, ну никак нельзя поменять, то можете написать на том же PHP(я думаю там он поддерживается) и не заморачиваться по этим wsgi и прочим. Выбор инструмента ведь за специалистом и здесь PHP лучше подойдёт(на мой взгляд). Если же со средствами нет проблем(тем более, что другой хостинг не на много дороже, если вообще дороже), то пишите с использованием WSGI, так как другой программист(или Вы через какое-то время) скажет Вам спасибо за использование понятного всем стандарта, а не своего велосипеда, который ещё и нужно собрать, настроить, защитить и т.д.

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

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

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

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