Зачем избегать CGI для Python с хостингом LAMP? - PullRequest
22 голосов
/ 10 марта 2009

Я использую PHP годами. В последнее время я сталкивался с многочисленными сообщениями на форуме, заявляющими, что PHP устарел , что современные языки программирования проще, безопаснее и т. Д.

Итак, я решил начать изучать Python . Поскольку я привык использовать PHP, я только начал создавать страницы, загрузив файл .htaccess с:

addtype text/html py
addhandler cgi-script .py

Тогда мои образцы страниц выглядят так:

#!/usr/bin/python
print "content-type: text/html\n\n"
print "html tags, more stuff, etc."

Это отлично работает. Но я наткнулся на комментарий в посте, в котором говорилось, что CGI - не лучший способ использовать Python . Конечно, в нем не упоминалось, что является лучшим способом.

Почему использование CGI не лучший способ использования Python? Какая альтернатива?

Есть ли какой-нибудь совершенно другой способ для создания простого сайта Python? Есть ли какая-то совершенно другая парадигма, на которую я должен смотреть за пределами файлов .htaccess и .py?

Относящиеся

Ответы [ 6 ]

11 голосов
/ 10 марта 2009

Классический CGI - не лучший способ использовать что-либо вообще. С классическим CGI-сервером должен порождать новый процесс для каждого запроса .

Что касается Python, у вас есть несколько альтернатив:

5 голосов
/ 10 марта 2009

Почему использование CGI - не лучший способ использовать Python?

Я немного постою за CGI. Это хорошо для сред разработки.

Просто подключиться, и вам не нужно беспокоиться о проблемах с перезагрузкой модуля. Естественно, производительность ужасна, но для разработчика вам все равно.

Конечно, вы действительно должны писать в интерфейс WSGI, а не напрямую в CGI. Затем вы можете выполнить развертывание через CGI, используя:

wsgiref.handlers.CGIHandler().run(application)

и используйте тот же объект приложения для развертывания через mod_wsgi другого любого другого сервера WSGI, который вы предпочитаете, в производственной среде, где важна скорость (и в среде тестирования, где вы хотите, чтобы она была максимально приближена к рабочей).

3 голосов
/ 10 марта 2009

На самом деле это просто вопрос эффективности - CGI порождает совершенно новый процесс для каждого запроса, который достаточно тяжел для того, что он делает.

PHP также может быть запущен через CGI, но mod_php встраивает интерпретатор в apache. Есть mod_python , который выполняет ту же работу, и mod_wsgi , как говорит Ювал.

3 голосов
/ 10 марта 2009

mod_wsgi - правильная альтернатива. Это предпочтительнее, чем CGI почти во всех аспектах.

2 голосов
/ 10 марта 2009

В документации Python есть страница, которая описывает преимущества и недостатки различных возможностей .

mod_python

(…) По этим причинам следует избегать mod_python при написании новых программ.

WSGI

* Шлюз веб-сервера или WSGI для краткости на данный момент лучший возможный путь к сети Python программирование. Хотя это здорово для программисты пишут фреймворки, нормальному человеку не нужно входить прямой контакт с ним.

FastCGI и прочее

В наши дни FastCGI никогда не используется напрямую.

2 голосов
/ 10 марта 2009

Помимо предложений, которые делают другие, вы действительно должны подумать об использовании какой-либо платформы. Вы можете и должны использовать FastCGI , mod_python или mod_wsgi, но на самом деле они не были предназначены для вас, чтобы писать код напрямую. Могу я предложить один из следующих вариантов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...