Что такое WSGI и CGI на простом английском языке?

Каждый раз, когда я читаю WSGI или CGI, я сжимаю. Я пробовал читать на нем раньше, но ничего не застряло.

Что это действительно на простом английском языке?

Он просто передает запросы терминалу и перенаправляет вывод?

Ответ 1

WSGI запускает интерпретатор Python при запуске веб-сервера либо как часть процесса веб-сервера (встроенный режим), либо как отдельный процесс (режим демона) и загружает в него script. Каждый запрос вызывает определенную функцию в вызываемом script, при этом среда запроса передается в качестве аргументов функции.

CGI запускает script как отдельный процесс для каждого запроса и использует переменные среды, stdin и stdout для "общения" с ним.

Ответ 2

С совершенно противоположной точки зрения, Blankman, вот моя "Вступление страницы" для интерфейса шлюза веб-служб:

ЧАСТЬ ПЕРВАЯ: WEB-СЕРВЕРЫ

Веб-серверы обслуживают ответы. Они сидят, терпеливо ждут, а затем без какого-либо предупреждения внезапно:

  • клиентский процесс отправляет запрос. Клиентский процесс может быть веб-сервером, ботом, мобильным приложением. Это просто "клиент"
  • веб-сервер получает этот запрос
  • преднамеренное mumble различные вещи случаются (см. ниже)
  • Веб-сервер отправляет что-то клиенту
  • веб-сервер снова сидит

Веб-серверы (по крайней мере, лучшие) очень ОЧЕНЬ хороши в этом. Они масштабируются вверх и вниз в зависимости от спроса, они надежно проводят беседы с самыми яркими клиентами по действительно развалившимся сетям, и нам никогда не приходится беспокоиться об этом. Они просто продолжают служить.

Это моя точка зрения: веб-серверы просто такие: серверы. Они ничего не знают о контенте, ничего о пользователях, ничего, кроме того, как ждать много и отвечать надежно.

Ваш выбор веб-сервера должен отражать предпочтение вашей доставки, а не ваше программное обеспечение. Ваш веб-сервер должен отвечать за обслуживание, а не за обработку или логический материал.

ЧАСТЬ ВТОРАЯ: (PYTHON) ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

Программное обеспечение не сидит. Программное обеспечение существует только во время выполнения. Программное обеспечение не очень удобно, когда дело доходит до неожиданных изменений в его среде (файлы не находятся там, где они ожидают, переименованные параметры и т.д.). Хотя оптимизация должна быть основным принципом вашего дизайна (конечно), само программное обеспечение не оптимизируется. Разработчики оптимизируют. Программное обеспечение выполняется. Программное обеспечение делает все в разделе "преднамеренное бормотание" выше. Может быть что угодно.

Ваш выбор или дизайн программного обеспечения должны отражать ваше приложение, ваш выбор функциональности, а не ваш выбор веб-сервера.

Здесь традиционный метод "компиляции на языках" для веб-серверов становится болезненным. Вы вставляете код в свое приложение, чтобы справиться с физической серверной средой или, по крайней мере, вынуждены выбирать подходящую библиотеку "обертки" для включения во время выполнения, чтобы создать иллюзию единообразия на всех веб-серверах.

ТАК ЧТО ТАКОЕ WSGI?

Итак, наконец, что такое WSGI? WSGI представляет собой набор правил, написанных на две половины. Они написаны таким образом, что их можно интегрировать в любую среду, которая приветствует интеграцию.

Первая часть, написанная для веб-сервера, говорит: "Хорошо, если вы хотите иметь дело с WSGI-приложением, вот как будет выглядеть программное обеспечение при загрузке. Вот то, что вы должны сделать доступным для приложения, и вот интерфейс (макет), который вы можете ожидать от каждого приложения. Более того, если что-то пойдет не так, вот как будет выглядеть приложение и как вы можете ожидать, что он будет себя вести".

Вторая часть, написанная для прикладного программного обеспечения Python, гласит: "Хорошо, если вы хотите иметь дело с WSGI-сервером, вот как сервер будет думать, когда он свяжется с вами. Вот то, что вы должны сделать доступным для сервер, и вот интерфейс (макет), который вы можете ожидать от каждого сервера. Более того, если что-то пойдет не так, вот как вы должны себя вести, и вот что вам следует сказать серверу.

Итак, у вас есть это - серверы будут серверами, а программное обеспечение будет программным обеспечением, и здесь они смогут отлично справиться, не прибегая к каким-либо дополнительным преимуществам в отношении особенностей другого. Это WSGI.

mod_wsgi, с другой стороны, является плагином для Apache, который позволяет ему разговаривать с WSGI-совместимым программным обеспечением, другими словами, mod_wsgi - это реализация - в Apache - правил первой части вышеприведенного правила.

Что касается CGI.... спросите кого-нибудь еще: -)

Ответ 3

Если вы неясны на всех терминах в этом пространстве и можете встретить это, его запутанный сокращенный аббревиатурой, там также есть хороший справочный читатель в форме официального Python HOWTO, который обсуждает CGI и FastCGI vs. WSGI и т.д.: http://docs.python.org/howto/webservers.html. Хотелось бы, чтобы я прочитал его в первую очередь.

Ответ 4

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

WSGI, с другой стороны, является специфичным для Python интерфейсом с более высоким уровнем, который позволяет программистам писать приложения, которые являются агрегированными для сервера, и которые могут быть обернуты в другие приложения WSGI (промежуточное программное обеспечение).