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