사이트가 핑 요청에 응답하지 않는지 확인하는 장고에 내장 된 간단한 가동 시간 모니터링 앱이 있습니다. 열 "dt"에 핑 (ping) 된 시간 소인 및 "ms"열의 밀리 초 응답 시간을 저장합니다. 사이트가 매분 ping되고 항목이 데이터베이스에 저장됩니다.장고 평균 날짜 범위
장고 모델은 다음과 같습니다
class Uptime (models.Model):
user = models.ForeignKey(User)
dt = models.DateTimeField()
ms = models.IntegerField()
나는 DT 열에서 한 번에 하나의 일을 잡아 그 날의 MS 응답 시간의 평균을하고 싶습니다. 하루에 1440 개의 항목이 있지만 (예 : 4-19-2013) 그날을 움켜 잡고 평균 ms 응답 시간을 얻고 싶습니다. 내가 사용하고있는 코드는 틀림없이 잘못된 것이지만 올바른 길을 가고 있다고 느낍니다. 이걸 어떻게 작동시킬 수 있니?
output_date = Uptime.objects.filter(user = request.user).values_list('dt', flat = True).filter(dt__range=(startTime, endTime)).order_by('dt').extra(select={'day': 'extract(day from dt)'}).values('day')
output_ms = Uptime.objects.filter(user = request.user).filter(dt__range=(startTime, endTime)).extra(select={'day': 'date(dt)'}).values('day').aggregate(Avg('ms'))
고마워요!
을 Btw는이 스케일링에 올 때, 이것은 당신이 몇 백이있는 경우 느린 얻을 시작, 다음과 같은
이 당신에게 목록을 제공해야합니다
다음 시도 백만 행. 그 이유는 당신은 단지 날짜 부분에 db 인덱스를 가질 수없고, 당신은 일일 집계 만하고 싶어하는 것처럼 보입니다. mysql에 별도의 날짜 열과 시간에 대한 또 다른 열을 하루에 초 수의 정수로 사용하는 것이 좋습니다. 이렇게하면 향후 질의 방식을 더 빠르게 할 수 있습니다. – aminland
감사합니다. 확장 성은 큰 관심사이므로 귀하의 통찰력에 감사드립니다. –