Автономный веб-сервер Python и / или nginx - PullRequest
2 голосов
/ 13 ноября 2011

Итак, я немного читал о веб-фреймворках Python (или серверах?), В основном Tornado и Bottle , а также FAPWS3 , и до сих пор некоторые серые зоны.

Во-первых, все эти три веб-фреймворка называются быстрыми, но все они включают в себя веб-сервер, написанный на Python (за исключением FAPWS3), который следует поместить за nginx / Apache. Разве это не снижает производительность? Я имею в виду, мы знаем, что Python намного медленнее, чем C, почему бы не использовать только nginx или, в худшем случае, только включенный веб-сервер Python?

1 Ответ

7 голосов
/ 13 ноября 2011

Во-первых, Tornado и FAPWS3 являются веб-серверами, а Bottle - веб-фреймворком.Те относятся к совершенно разным категориям.

Веб-фреймворки обычно запускаются как WSGI сервер за HTTP («веб») прокси.HTTP-сервер, включенный в большинство фреймворков, предназначен только для быстрой разработки и развертывания и простого развертывания на сайтах, где высокая эффективность не имеет значения.

Идея заключается в том, что HTTP-сервер (Apache / Lighttpd / Nginx / Tornado)/ FAPWS3 и т. Д.) Очень хорошо разбирается в HTTP и обслуживает статические файлы с диска.С другой стороны, динамический контент генерируется сервером Python с использованием веб-фреймворка, такого как Bottle / Flask / web.py / Pylons / etc.Документ, созданный веб-структурой, затем отправляется обратно на HTTP-сервер через WSGI, помещается в HTTP-ответ и отправляется клиенту.

...