Найти - Пользователи
Полная версия: wsgi и пул постоянных соединений к БД
Начало » Web » wsgi и пул постоянных соединений к БД
1
paganmind
Насколько я понимаю обычной для веб-приложений на Python является схема при которой при каждом HTTP-запросе создается соединение к БД, делается сам запрос данных, соединение разрывается.
Есть ли практика создания приложения с пулом постоянных соединений к БД?
Например при старте wsgi-сервера количество нитей ограничено и равно N, при этом сразу же создается N постоянных подключений к БД,
Как вариант, можно создавать новую сессию только тогда, когда нет свободных существующих - по нарастающей до N.
Имеет ли смысл это делать?
Александр Кошелев
paganmind
Имеет ли смысл это делать?
Если вы уверены что это поможет решить вашу задачу. Кстати, какая она?
paganmind
Daevaorn
paganmind
Имеет ли смысл это делать?
Если вы уверены что это поможет решить вашу задачу. Кстати, какая она?
Немного предыстории…
Задача была изначально другая, хотел сделать пул IMAP-соединений, т.е. чтобы веб-интерфейс к почтовому серверу при каждом клике не открывал и закрывал новое соединение, а работал в пределах одной сессии пользователя при этом отрубался или по запросу (logout) или по таймауту.
Со временем отложил этот проект, но по аналогии хотелось сделать то же самое с БД.

Задачи конкретной сейчас нет, есть просто мысли об архитектуре :)
Ведь десктопные приложение удерживают постоянное соединение с БД, и хотелось чтобы wsgi-приложение как полноценное работало таким же образом.
К тому же это уменьшит время генерации страницы на счет отсутствие подключения/отключения, а мониторить соединения можно в отдельном потоке.

Т.е. задача узнать или практиковали вы такое и с какими проблемами архитектуры сталкивались?
Lexander
При пуле соединений сразу исключается возможность использовать встроенный в СУБД механизм авторизации. Причем, на десктопе такой проблемы нет, т.к. пул (если он клиентский) создается с указанным логином/паролем.
Создавая свой пул соединений не забывайте соединения поддерживать (отправка “пустой” команды), чтобы сервер БД не обрывал их по таймауту.
paganmind
Lexander
При пуле соединений сразу исключается возможность использовать встроенный в СУБД механизм авторизации. Причем, на десктопе такой проблемы нет, т.к. пул (если он клиентский) создается с указанным логином/паролем.
10 соединений к БД с одним и тем же логином, сессия БД никак не связана с сессией пользователя. Просто вместо одной “трубы” используется 10
Ибо тогда для каждого пользователя нужна новая сессия БД, что просто невозможно.

Я предполагал, что пользователь один запрос делает через одну сессию БД, а другой - может через другую… Т.е. точно так же как обычно, только сессии не закрываются и контролируются постоянно.

Писал и сам понял что все не так гладко. Нужно реализовать отдельную Middleware для этого. В процессе написания уже будет понятно. Спасибо
Lexander
Создавая свой пул соединений не забывайте соединения поддерживать (отправка “пустой” команды), чтобы сервер БД не обрывал их по таймауту.
Это да, как один из минусов
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB