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