Каждый раз, когда я читаю WSGI или CGI, я сжимаю. Я пробовал читать на нем раньше, но ничего не застряло.
Что это действительно на простом английском языке?
Он просто передает запросы терминалу и перенаправляет вывод?
Каждый раз, когда я читаю WSGI или CGI, я сжимаю. Я пробовал читать на нем раньше, но ничего не застряло.
Что это действительно на простом английском языке?
Он просто передает запросы терминалу и перенаправляет вывод?
WSGI запускает интерпретатор Python при запуске веб-сервера либо как часть процесса веб-сервера (встроенный режим), либо как отдельный процесс (режим демона) и загружает в него script. Каждый запрос вызывает определенную функцию в вызываемом script, при этом среда запроса передается в качестве аргументов функции.
CGI запускает script как отдельный процесс для каждого запроса и использует переменные среды, stdin и stdout для "общения" с ним.
С совершенно противоположной точки зрения, Blankman, вот моя "Вступление страницы" для интерфейса шлюза веб-служб:
ЧАСТЬ ПЕРВАЯ: WEB-СЕРВЕРЫ
Веб-серверы обслуживают ответы. Они сидят, терпеливо ждут, а затем без какого-либо предупреждения внезапно:
Веб-серверы (по крайней мере, лучшие) очень ОЧЕНЬ хороши в этом. Они масштабируются вверх и вниз в зависимости от спроса, они надежно проводят беседы с самыми яркими клиентами по действительно развалившимся сетям, и нам никогда не приходится беспокоиться об этом. Они просто продолжают служить.
Это моя точка зрения: веб-серверы просто такие: серверы. Они ничего не знают о контенте, ничего о пользователях, ничего, кроме того, как ждать много и отвечать надежно.
Ваш выбор веб-сервера должен отражать предпочтение вашей доставки, а не ваше программное обеспечение. Ваш веб-сервер должен отвечать за обслуживание, а не за обработку или логический материал.
ЧАСТЬ ВТОРАЯ: (PYTHON) ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Программное обеспечение не сидит. Программное обеспечение существует только во время выполнения. Программное обеспечение не очень удобно, когда дело доходит до неожиданных изменений в его среде (файлы не находятся там, где они ожидают, переименованные параметры и т.д.). Хотя оптимизация должна быть основным принципом вашего дизайна (конечно), само программное обеспечение не оптимизируется. Разработчики оптимизируют. Программное обеспечение выполняется. Программное обеспечение делает все в разделе "преднамеренное бормотание" выше. Может быть что угодно.
Ваш выбор или дизайн программного обеспечения должны отражать ваше приложение, ваш выбор функциональности, а не ваш выбор веб-сервера.
Здесь традиционный метод "компиляции на языках" для веб-серверов становится болезненным. Вы вставляете код в свое приложение, чтобы справиться с физической серверной средой или, по крайней мере, вынуждены выбирать подходящую библиотеку "обертки" для включения во время выполнения, чтобы создать иллюзию единообразия на всех веб-серверах.
ТАК ЧТО ТАКОЕ WSGI?
Итак, наконец, что такое WSGI? WSGI представляет собой набор правил, написанных на две половины. Они написаны таким образом, что их можно интегрировать в любую среду, которая приветствует интеграцию.
Первая часть, написанная для веб-сервера, говорит: "Хорошо, если вы хотите иметь дело с WSGI-приложением, вот как будет выглядеть программное обеспечение при загрузке. Вот то, что вы должны сделать доступным для приложения, и вот интерфейс (макет), который вы можете ожидать от каждого приложения. Более того, если что-то пойдет не так, вот как будет выглядеть приложение и как вы можете ожидать, что он будет себя вести".
Вторая часть, написанная для прикладного программного обеспечения Python, гласит: "Хорошо, если вы хотите иметь дело с WSGI-сервером, вот как сервер будет думать, когда он свяжется с вами. Вот то, что вы должны сделать доступным для сервер, и вот интерфейс (макет), который вы можете ожидать от каждого сервера. Более того, если что-то пойдет не так, вот как вы должны себя вести, и вот что вам следует сказать серверу.
Итак, у вас есть это - серверы будут серверами, а программное обеспечение будет программным обеспечением, и здесь они смогут отлично справиться, не прибегая к каким-либо дополнительным преимуществам в отношении особенностей другого. Это WSGI.
mod_wsgi, с другой стороны, является плагином для Apache, который позволяет ему разговаривать с WSGI-совместимым программным обеспечением, другими словами, mod_wsgi - это реализация - в Apache - правил первой части вышеприведенного правила.
Что касается CGI.... спросите кого-нибудь еще: -)
Если вы неясны на всех терминах в этом пространстве и можете встретить это, его запутанный сокращенный аббревиатурой, там также есть хороший справочный читатель в форме официального Python HOWTO, который обсуждает CGI и FastCGI vs. WSGI и т.д.: http://docs.python.org/howto/webservers.html. Хотелось бы, чтобы я прочитал его в первую очередь.
Оба CGI и WSGI определяют стандартные интерфейсы, которые программы могут использовать для обработки веб-запросов. Интерфейс CGI находится на более низком уровне, чем WSGI, и включает в себя сервер, устанавливающий переменные среды, содержащие данные из HTTP-запроса, при этом программа возвращает что-то отформатированное в значительной степени подобно голосовой ответ HTTP-сервера.
WSGI, с другой стороны, является специфичным для Python интерфейсом с более высоким уровнем, который позволяет программистам писать приложения, которые являются агрегированными для сервера, и которые могут быть обернуты в другие приложения WSGI (промежуточное программное обеспечение).