Django: переменные уровня приложения
Я создал приложение Django-rest-framework. Он предоставляет некоторый API, который выполняет некоторые операции get / set в БД MySQL.
У меня есть требование сделать HTTP-запрос к другому серверу и добавить этот ответ вместе с обычным ответом. Я пытаюсь использовать самодельный пул HTTP-соединений для выполнения HTTP-запросов вместо создания новых соединений для каждого запроса.
Какое наиболее подходящее место для хранения объекта пула HTTP-соединений на уровне приложения?
Я искал вокруг, и есть несколько решений, каждое из которых имеет свои недостатки. Вот некоторые:
Создавать одноэлементный класс пула в файле diff, но это не очень хороший питонный способ. Существуют различные дискуссии о том, почему бы не использовать шаблон проектирования Singleton.
Кроме того, я не знаю, насколько разумно было бы объединить в пул? (:П)
Держать его вв этом.py из приложения dir. Проблема с этим заключаются в следующем:Он должен содержать только импорт и вещи, связанные с этим.Будет трудно выполнить модульное тестирование кода, потому что импорт будет происходить до насмешки, и он действительно попытается попасть в API.Использовать сеансы, но я думаю, что это имеет больше смысла, если это было что-то конкретное для пользовательского сеанса, например, для конкретного номера пользователя и т. Д.
Также объект должен быть сериализуемым. Я не знаю, как пул HTTP-соединений может быть сериализован.
Чтобы сохранить его глобальным в views.py, но это также не рекомендуется.Как лучше всего хранить такие переменные уровня приложения / глобального уровня?