LINUX.ORG.RU

Непонятен принцип работы nginx + flup + wsgi-фреймворк


0

2

Добрый день. Помогите, пожалуйста, разобраться. Я опишу, как себе это представляю, а вы поправьте или дополните

Имеем: сервер nginx - один (два) процесс, который может управлять сотнями соединений

севрер fastcgi (flup) - один процесс, который тоже все время запущен на порту, например 9000

nginx принимает запрос от клиента, превращает его в fastcgi-запрос и отправляет на flup через сокет на 9000 порт.

flup, на основе принятого fastcgi выполняет соответствую wsgi-функцию, которая и является точкой входа для работы фреймворка

если с nginx на flup поступит несколько аналогичных запросов, flup создаст несколько тредов и в каждом запустит одну и ту же wsgi-функцию...

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

В чем я не прав?

★★★★★

Последнее исправление: makoven (всего исправлений: 1)

> если запустить сотни одинаковыз wsgi - функций - они будут менять это состояние, мешать друг другу

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

tarc
()
Ответ на: комментарий от tarc

Пока писал вопрос, тоже думал над этим.

Получается, что в одном процессе запускается сотня экземпляров джанги(например)? И тут же вспоминается питоновский конфуз с GIL и диссонанс усиливается.

makoven ★★★★★
() автор топика
Ответ на: комментарий от hizel

>>а что flup - closed source?

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

makoven ★★★★★
() автор топика
Ответ на: комментарий от makoven

Товарищ имел в виду, что лушчий способ узнать как что-то работает - это почитать исходники :)

схема на питон-тредах вроде бы сейчас bleeding edge у питонщиков

Может память меня и подводит но вроде бы по умолчанию для параллельной обработки запросов flup форкается, а не создает потоки, что в принципе и есть best practice

tarc
()
Ответ на: комментарий от makoven

>Получается, что в одном процессе запускается сотня экземпляров джанги(например)?

Джанга по дефолту форкается.

Сотня экземпляров - это жестоко:)

anonymous
()
Ответ на: комментарий от makoven

>Но, подобная схема на питон-тредах вроде бы сейчас bleeding edge

На каких питон-тредах? На том, что гордо называется threading? Или ты про greenlet?

anonymous
()
Ответ на: комментарий от anonymous

>>Джанга по дефолту форкается.

А как в этом отношении дела обстоят с pylons?

makoven ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.