Понимание тут WSGI

Я пытаюсь понять функциональность WSGI и нуждаюсь в некоторой помощи.

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

Я мало понимаю из того, что я написал выше, поэтому вот вопросы новичка: 1) Что такое общий поток вызовов ? Приложение предоставит серверу вызываемый, а затем сервер вызовет приложение, используя этот вызываемый и используя функцию env_vars и start_response как споры?

2) больше всего меня смущает то, что приложение отправляет заголовки запросов, а затем отправляет тело ответа. Что это за запрос ?

пожалуйста, просветите меня, пока я не могу получить мою голову вокруг этого.

спасибо!

2 ответов


поток вызовов выглядит следующим образом:

  1. сервер получил http-соединение,
  2. сервер проанализировал строку http-запроса и заголовки, прочитал тело,
  3. сервер заполняет environ дикт по запросу
  4. сервер называет приложение вызываемым с environ и start_response в качестве аргументов
  5. приложение вызываемые звонки start_response статус ответ и заголовки ответов,
  6. приложение возвращает тело ответа на сервер,
  7. сервер отправляет HTTP-ответ клиенту.

для вашей второй проблемы запрос / ответ-это интерфейс, определенный протоколом wsgi (например, status = '200 OK', response_headers = [('Content-type', 'text / plain')]), а не то же самое с http запрос/ответ.

вы можете просмотреть модуль библиотеки стенда wsgiref в качестве ссылки.


вы можете прочитать это, чтобы узнать больше об этом:

http://agiliq.com/blog/2013/07/basics-wsgi/