Django: как бороться с интенсивной вычислительной моделью - PullRequest
0 голосов
/ 20 апреля 2020

Я новичок в 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 Вопрос заключается в следующем: существует ли более эффективный / лучший способ структурирования моего кода таким образом, чтобы данные вычислялись перед использованием на стороне сервера? Правильный ли мой подход или я упускаю что-то очень фундаментальное?

Основная цель - ускорить отображение запрашиваемых пользователем страниц.

Спасибо за ваше время и помощь!

...