Я жду довольно долго, прежде чем получу отчет в своем проекте (написано в Django = 2.2, python = 3.7). У меня сложная схема модели, и в моем отчете я действительно хочу получить информацию о пользователях для конкретных задач. Я обнаружил, что часть моего кода заставляет меня ждать так долго, и я не могу обновить его сам
Я пытался изменить функцию агрегирования для аннотирования, но она работает еще дольше. Я исследовал документацию по Django и нашел новые подходы, но не смог найти никакой хорошей информации о том, как изменить существующий код. Я также пытался добавить index=True
в модель, с которой я часто работаю, когда получаю отчеты, но тоже не получилось.
def make_report(self, notes, project, date_range_list, from_date):
report = {}
current_date =
for d in date_range_list:
report[str(d.date())] = {}
for user in tasks.user.iterator():
current_user_usernames = user.get_board_usernames()
#here is the problems begin
**report[d.strftime('%Y-%m-%d')][user.id] = (
notes.filter(username__in=current_user_usernames)
.filter(timestamp__range=(from_date, from_date + datetime.timedelta(days=1)))
.aggregate(Sum("seconds"))["seconds__sum"]
or 0
)**
# each iteration takes quite long time
current_date = current_date + datetime.timedelta(days=1)
return report
Я жду около 8-10 секунд для небольших задач и до пары минут для очень больших задач.