Я новичок в Django и использую его для стороннего проекта, и столкнулся с некоторыми проблемами эффективности, как описано ниже:
Приложение Django покажет каждому вошедшему в систему пользователю соответствующие данные. Приложение basi c отлично работает, а models.py и views.py выглядят следующим образом:
models.py :
class UserDataParser:
"""
Read data into a pandas DataFrame and manipulate it as needed. This contains
the master DataFrame which is later filtered as required by different users.
"""
def __init__(self):
self.processParsedData()
...
def processParsedData(self):
...
...
views.py :
from .models import UserDataParser
def welcome_page(request):
parser = UserDataParser()
# do stuff with parser
return render(request, 'user_page.html', context={'data': parser.get_some_data(request.user)})
Моя проблема заключается в следующем: UserDataParser
требует большого объема вычислений, так как читает некоторые данные на диске (<100 МБ) и затем выполняет некоторую предварительную обработку (groupBy, filtering et c). Поэтому, когда <code>welcome_page вызывается для отображения страницы пользователя, загрузка веб-страницы занимает несколько минут, поскольку созданная модель сначала читает данные и выполняет их вычисления, прежде чем вернуть требуемые данные.
My Вопрос заключается в следующем: существует ли более эффективный / лучший способ структурирования моего кода таким образом, чтобы данные вычислялись перед использованием на стороне сервера? Правильный ли мой подход или я упускаю что-то очень фундаментальное?
Основная цель - ускорить отображение запрашиваемых пользователем страниц.
Спасибо за ваше время и помощь!