Каков наилучший подход к обработке экземпляров классов в приложении django в производственной среде?
Я хотел бы рассмотреть два подхода. Во-первых, можно создать класс и его экземпляр в классе, а внутри представления импортировать экземпляр и вызывать его методы. Второй - импортировать класс и создавать его экземпляр внутри функции представления при обработке запроса. Как вы думаете, какой из них лучше. Также я не говорю о классах типа , models, forms или serializer и т.д., которые связаны с Django, а о тех, которые я создаю вручную для себя.
Подход 1: Создайте экземпляр на уровне модуля и импортируйте его
# utils.py
class Calc:
def run(self):
# perform calculations
return result
calc_instance = Calc()
# views.py
from utils import calc_instance
def view_function(request):
result = calc_instance.run()
# rest of the view logic
Подход 2: Импортируйте класс и создайте экземпляр внутри функции view
# utils.py
class Calc:
def run(self):
# perform calculations
return result
# views.py
from utils import Calc
def view_function(request):
calc_instance = Calc()
result = calc_instance.run()
# rest of the view logic
Кроме того, я вижу, что подход 1 создает единственный экземпляр, который остается в памяти на все время существования процесса, по крайней мере на сервере разработки.
Основываясь на вашем опыте, какой подход вы бы посоветовали, или оба демонстрируют схожее поведение в производственной среде.
Зависит от варианта использования
Случай 1: если вы не храните никаких данных в экземпляре (как и в первом случае), лучше использовать методы класса.
Случай использования 2: хранение данных в объекте. Импортируйте класс и создайте объект в файле view.py (аналогично второму подходу)
Ответ сводится к тому, хотите ли вы хранить данные вместе с объектом, если да, то выбирайте второй подход, иначе первый имеет больше смысла.