Почему веб-фреймворки работают через FastCGI/SCGI, а не через HTTP?

Основные веб-фреймворки (такие как Django, Pyramid, Rails и т. Д.) Часто работают как постоянные серверы, а отдельный веб-сервер, такой как nginx, служит в качестве внешнего интерфейса. Веб-сервер подключается через протокол, такой как FastCGI или SCGI:

browser --[http]--> nginx --[fastcgi]--> flup -> django

Это кажется мне запутанным; почему запрос конвертируется в совершенно другой протокол, когда сервер может просто запустить свой собственный HTTP-сервер?

browser --[http]--> nginx --[http]--> wsgiref -> django

Этот подход представляется более простым и более гибким, поскольку существует только один транспортный протокол и это RFC.

Однако я не думаю, что когда- либо видел, чтобы веб-фреймворк поощрял дизайн только для http, поэтому я предполагаю, что для этого должна быть причина.

Каковы преимущества использования протокола как FastCGI/SCGI здесь?

1 ответ

Решение

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

Другие вопросы по тегам