Задать вопрос
@slaverchief

Правильно ли я понял этот принцип работы?

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

В общем, попал HTTP запрос на сервер, а точнее - на веб сервер, тот отдаёт этот запрос серверу приложений, тот в свою очередь запускает WSGI сервер, которому передаются данные запроса, в WSGI сервер есть обработчик, который обращается уже к самому веб-приложению, но предположим, что перед ним стоит фреймворк, фреймворк получает ещё порции данных от WSGI сервера и переводит их в понятный для разработчика вид, чтобы он мог с этим работать, фреймворк даёт необходимые API для создания приложений, потом в приложении генерируется html страница, отдаётся WSGI серверу, тот отдаёт его обратно серверу приложений, тот отдает его веб-серверу в формате HTTP ответа, тот отдаёт его клиенту(браузеру), тот, при присутствии каких-то необходим доп файлов к странице(css, java скриптов и т д), обращается опять к серверу, тот через веб сервер получает статические файлы и отдаёт обратно.
  • Вопрос задан
  • 232 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
@javedimka
Хочу сока
тот отдаёт этот запрос серверу приложений, тот в свою очередь запускает WSGI сервер, которому передаются данные запроса

Нет, WSGI сервер запускается один раз.
в WSGI сервер есть обработчик, который обращается уже к самому веб-приложению

Нет, у WSGI сервера нет зависимостей от твоего приложения.
фреймворк получает ещё порции данных от WSGI сервера и переводит их в понятный для разработчика вид

Нет, фреймворк не получает ещё порций данных от WSGI сервреа, он получает ровно тоже самое что и приложение без фреймворка.
потом в приложении генерируется html страница, отдаётся WSGI серверу, тот отдаёт его обратно серверу приложений

Нет, WSGI серверу отдаются данные в формате определённом стандартом WSGI.

WSGI сервер это просто прослойка между "веб" сервером и питон приложением, которая позволяет не задумываться о выборе "веб" сервера и/или фреймворка, на котором будет написано приложение.

WSGI сервер запускается один раз, с натравливанием на специальный объект, определённый стандартом WSGI, этот объект написан разработчиком приложения, или разработчиком фреймворка, если используется фреймворк. (не всегда)
Когда с "веб" сервера приходит HTTP запрос, WSGI сервер обрабатывает этот запрос, разбирает его на структуру, определённую стандартом, и вызывает тот самый специальный объект, определённый стандартом WSGI, который делает вещи определённые стандартом WSGI, а именно - используя переданный в параметрах объект, отправляет WSGI серверу код HTTP ответа и заголовки ответа, после чего возвращает генератор, который будет возвращать тело ответа. WSGI сервер из всего этого дела варит HTTP ответ и возвращает его "веб" серверу.
Получать заголовки и тело можно как угодно - можно делать это используя фреймворк типо джанго/flask, или же просто читать из файла.

Просто прочти PEP:
https://www.python.org/dev/peps/pep-3333/#environ-...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы