Каков наилучший подход к обработке экземпляров классов в приложении 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 (аналогично второму подходу)

Ответ сводится к тому, хотите ли вы хранить данные вместе с объектом, если да, то выбирайте второй подход, иначе первый имеет больше смысла.

Вернуться на верх