Зачем избегать CGI для Python с хостом LAMP?
Я использую 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?
Связанные
Ответы
Ответ 1
Классический CGI - это не лучший способ использовать что-либо вообще. С помощью классического сервера CGI создайте новый процесс для каждого запроса.
Что касается Python, у вас мало альтернатив:
Ответ 2
Почему использование CGI не лучший способ использовать Python?
Я немного задержусь за CGI. Это хорошо для среды разработки.
Прост в подключении, и вам не нужно беспокоиться о проблемах перезагрузки модуля. Естественно производительность ужасна, но для dev вам все равно.
Конечно, вы действительно должны писать на интерфейс WSGI, а не непосредственно CGI. Затем вы можете развернуть через CGI, используя:
wsgiref.handlers.CGIHandler().run(application)
и использовать один и тот же объект приложения для развертывания через mod_wsgi другого любого другого сервера WSGI, который вы предпочитаете в производственной среде, где имеет значение скорость (и в тестовой среде, где вы хотите, чтобы она была как можно ближе к производству).
Ответ 3
mod_wsgi является подходящей альтернативой. Это предпочтительнее всего CGI практически во всех аспектах.
Ответ 4
На самом деле это просто эффективная вещь. CGI порождает целый новый процесс для каждого запроса, который достаточно тяжелый для того, что он делает.
PHP также может запускаться через CGI, но mod_php внедряет интерпретатор в apache.
Там mod_python, который выполняет ту же работу, и mod_wsgi как говорит Юваль.
Ответ 5
Помимо предложений, сделанных другими, вы должны действительно рассмотреть использование какой-либо структуры. Вы можете и должны использовать FastCGI, mod_python или mod_wsgi, но они на самом деле не предназначены для того, чтобы вы могли напрямую писать код. Могу я предложить одно из следующего?
Ответ 6
В документации Python есть страница, которая описывает преимущества и недостатки различных возможностей.
mod_python
(...) Вот почему mod_python следует избегать при написании новых программ.
WSGI
Интерфейс шлюза веб-сервера или В настоящее время WSGI является лучшим возможный путь к веб-сайту Python программирование. Хотя это отлично подходит для программисты, создающие основы, нормальному человеку не нужно прямой контакт с ним.
FastCGI и прочее
В наши дни FastCGI никогда не используется напрямую.