Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-11-09 10:47:31

0001 """Pages and cached-data reads for compute efficiency history."""
0002 import logging
0003 from datetime import date, datetime, timezone
0004 
0005 from django.http import JsonResponse
0006 from django.shortcuts import render
0007 
0008 from monitor_app import compute_efficiency as efficiency
0009 
0010 logger = logging.getLogger(__name__)
0011 
0012 
0013 def compute_efficiency(request):
0014     today = datetime.now(timezone.utc).date()
0015     index = today.year * 12 + today.month - 1 - 5
0016     start = max(efficiency.START, date(index // 12, index % 12 + 1, 1))
0017     return render(request, 'monitor_app/compute_efficiency.html', {
0018         'history_start': efficiency.START.isoformat(),
0019         'default_start': start.isoformat(), 'today': today.isoformat(),
0020     })
0021 
0022 
0023 def compute_efficiency_data(request):
0024     if request.GET.get('daily_cores') == '1':
0025         from monitor_app.productive_cores import product
0026         try:
0027             cached = product(refresh=request.GET.get('refresh') == '1')
0028             return JsonResponse({'record': cached['value'], 'built_at': cached['built_at'],
0029                                  'refreshing': cached['refreshing']},
0030                                 status=200 if cached['value'] else 202)
0031         except Exception:
0032             logger.exception('Daily productive core history refresh failed')
0033             return JsonResponse({'error': 'Daily production history update failed.'}, status=503)
0034     today = datetime.now(timezone.utc).date()
0035     try:
0036         end = date.fromisoformat(request.GET.get('end') or str(today))
0037         start = date.fromisoformat(request.GET.get('start') or str(efficiency.START))
0038         bucket = request.GET.get('bucket', 'month')
0039         if not efficiency.START <= start <= end <= today or bucket not in ('month', 'week'):
0040             raise ValueError('Choose a valid date range and month or week grouping.')
0041     except ValueError as exc:
0042         return JsonResponse({'error': str(exc)}, status=400)
0043     try:
0044         cached = efficiency.product(refresh=request.GET.get('refresh') == '1')
0045         if request.GET.get('summary') == '1':
0046             current = efficiency.current_product()
0047             result = efficiency.dashboard_data(cached.get('value') or {}, current.get('value'))
0048             result.update(built_at=current['built_at'], refreshing=current.get('refreshing'),
0049                           history_built_at=cached['built_at'])
0050             return JsonResponse(result, status=200 if result['current'] else 202)
0051     except Exception:
0052         logger.exception('compute efficiency history refresh failed')
0053         return JsonResponse({'error': 'History update failed; the failure is recorded in the server log.'}, status=500)
0054     value = cached.get('value')
0055     result = efficiency.display_data(value, start, end, bucket,
0056                                     exclude=request.GET.get('exclude_task') == '40856') if value else {}
0057     result.update(built_at=cached['built_at'].isoformat() if cached.get('built_at') else None,
0058                   refreshing=cached.get('refreshing'), age_seconds=cached.get('age_seconds'))
0059     return JsonResponse(result, status=200 if value else 202)