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