Catch errors from external service and display in alert box
Closes: #129
This commit is contained in:
		
							parent
							
								
									f19e4e4dd4
								
							
						
					
					
						commit
						7a9fbcec7b
					
				| 
						 | 
				
			
			@ -276,12 +276,15 @@ async def time_function(
 | 
			
		|||
    func: typing.Callable[..., typing.Coroutine[typing.Any, typing.Any, typing.Any]],
 | 
			
		||||
    *args,
 | 
			
		||||
    **kwargs,
 | 
			
		||||
) -> tuple[str, typing.Any, float]:
 | 
			
		||||
) -> tuple[str, typing.Any, float, Exception | None]:
 | 
			
		||||
    """Time the execution of an asynchronous function."""
 | 
			
		||||
    start_time = time()
 | 
			
		||||
    start_time, result, exception = time(), None, None
 | 
			
		||||
    try:
 | 
			
		||||
        result = await func(*args, **kwargs)
 | 
			
		||||
    except Exception as e:
 | 
			
		||||
        exception = e
 | 
			
		||||
    end_time = time()
 | 
			
		||||
    return name, result, end_time - start_time
 | 
			
		||||
    return name, result, end_time - start_time, exception
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def gap_list(
 | 
			
		||||
| 
						 | 
				
			
			@ -344,6 +347,8 @@ async def get_data(
 | 
			
		|||
 | 
			
		||||
    results = {call[0]: call[1] for call in result_list}
 | 
			
		||||
 | 
			
		||||
    errors = [(call[0], call[3]) for call in result_list if call[3]]
 | 
			
		||||
 | 
			
		||||
    gwr_advance_tickets = results["gwr_advance_tickets"]
 | 
			
		||||
 | 
			
		||||
    data_gather_seconds = time() - t0
 | 
			
		||||
| 
						 | 
				
			
			@ -389,7 +394,9 @@ async def get_data(
 | 
			
		|||
    events += accommodation_events
 | 
			
		||||
    events += travel.all_events(my_data)
 | 
			
		||||
    events += conference.get_list(os.path.join(my_data, "conferences.yaml"))
 | 
			
		||||
    events += results["backwell_bins"] + results["bristol_bins"]
 | 
			
		||||
    for key in "backwell_bins", "bristol_bins":
 | 
			
		||||
        if results[key]:
 | 
			
		||||
            events += results[key]
 | 
			
		||||
    events += read_events_yaml(my_data, last_year, next_year)
 | 
			
		||||
    events += subscription.get_events(os.path.join(my_data, "subscriptions.yaml"))
 | 
			
		||||
    events += economist.publication_dates(last_week, next_year)
 | 
			
		||||
| 
						 | 
				
			
			@ -467,5 +474,6 @@ async def get_data(
 | 
			
		|||
    reply["two_weeks_ago"] = two_weeks_ago
 | 
			
		||||
 | 
			
		||||
    reply["fullcalendar_events"] = calendar.build_events(events)
 | 
			
		||||
    reply["errors"] = errors
 | 
			
		||||
 | 
			
		||||
    return reply
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -127,6 +127,14 @@
 | 
			
		|||
    Sunset: {{ sunset.strftime("%H:%M:%S") }}</li>
 | 
			
		||||
    </ul>
 | 
			
		||||
 | 
			
		||||
  {% if errors %}
 | 
			
		||||
    {% for error in errors %}
 | 
			
		||||
      <div class="alert alert-danger" role="alert">
 | 
			
		||||
        Error: {{ error }}
 | 
			
		||||
      </div>
 | 
			
		||||
    {% endfor %}
 | 
			
		||||
  {% endif %}
 | 
			
		||||
 | 
			
		||||
  <h3>Stock markets</h3>
 | 
			
		||||
  {% for market in stock_markets %}
 | 
			
		||||
    <p>{{ market }}</p>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue