Как реализовать пул соединений в веб-приложении, таком как django?

Цель состоит в том, чтобы реализовать пул, такой как пул соединений с базой данных, в моем веб-приложении. Мое приложение написано Django.

Проблема в том, что каждый раз, когда приходит http-запрос, мой код загружается и выполняется. Поэтому, если я напишу код для запуска пула. Этот код будет запускаться для каждого http-запроса. И пул будет инициирован по запросу. Так что это бессмысленно.

Так как мне это написать?


person Mingwei Li    schedule 08.11.2017    source источник
comment
Как вы развертываете свой проект Django? uWSGI? Гуникорн? Что-то другое?   -  person Blender    schedule 08.11.2017
comment
это имеет значение? Он будет развернут uWSGI и nginx.   -  person Mingwei Li    schedule 08.11.2017
comment
uWSGI запускает интерпретатор для каждого работника. Вы можете создавать пулы соединений для каждого рабочего, просто сохраняя их за пределами конвейера запросов, например, как глобальные на уровне модуля.   -  person Blender    schedule 08.11.2017


Ответы (1)


Ваше понимание того, как все работает, неверно, к сожалению. То, как работает Django, во многом зависит от того, как вы его развертываете, но почти во всех случаях он не загружает код и не инициирует глобальные переменные при каждом запросе. Конечно, uWSGI так себя не ведет; он запускает набор долгоживущих рабочих процессов, которые сохраняются во многих запросах.

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

person Daniel Roseman    schedule 08.11.2017