Почему веб-фреймворки обслуживаются через 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 здесь?

7
задан John Millikin 19 January 2012 в 05:19
поделиться