Какой способ расчета SLA является наиболее эффективным?

Я пытаюсь понять, как я могу улучшить свой код. В принципе, есть сайт и есть некоторые события, которые пользователь может сделать. Мы предоставляем пользователю некоторую сводку о результате события, и SLA является одним из них.

Если я хочу рассчитать SLA события, я могу сделать это, получив объект и вычтя время начала_времени из времени окончания.

Сопутствующая модель:

class Event(models.Model):
    ...
    start_time = models.DateTimeField()
    end_time = models.DateTimeField()
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    ...

Ниже приведен мой код для расчета SLA.

events = Event.objects.all()

tmp_sla = 0
for event in events:
    time_difference = event.end_time - event.start_time
    tmp_sla += time_difference // 60 # convert seconds to minute
    
average_sla = tmp_sla // events.count()

Проблема в том, что есть очень много событий и много пользователей. Это приводит к длительному времени вычисления. И иногда мне приходится использовать более одного цикла for для вычисления. Время вычисления становится еще больше.

Есть ли какая-нибудь встроенная функция Django для этого? Или как я могу улучшить свои коды?

Заранее спасибо.

На мой взгляд, лучший способ улучшить ваш код - использовать пользовательский менеджер. Смотрите документацию:

https://docs.djangoproject.com/en/dev/topics/db/managers/

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