[typing] add results.Timing

This commit is contained in:
Martin Fischer 2022-01-17 08:06:31 +01:00
parent 1ed618222f
commit fdf562bc32
3 changed files with 23 additions and 16 deletions

View file

@ -2,7 +2,9 @@ import re
from collections import defaultdict
from operator import itemgetter
from threading import RLock
from typing import List, NamedTuple
from urllib.parse import urlparse, unquote
from searx import logger
from searx.engines import engines
from searx.metrics import histogram_observe, counter_add, count_error
@ -137,6 +139,12 @@ def result_score(result):
return sum((occurences * weight) / position for position in result['positions'])
class Timing(NamedTuple):
engine: str
total: float
load: float
class ResultContainer:
"""docstring for ResultContainer"""
@ -169,7 +177,7 @@ class ResultContainer:
self._closed = False
self.paging = False
self.unresponsive_engines = set()
self.timings = []
self.timings: List[Timing] = []
self.redirect_url = None
self.on_result = lambda _: True
self._lock = RLock()
@ -405,13 +413,8 @@ class ResultContainer:
if engines[engine_name].display_error_messages:
self.unresponsive_engines.add((engine_name, error_type, error_message, suspended))
def add_timing(self, engine_name, engine_time, page_load_time):
timing = {
'engine': engines[engine_name].shortcut,
'total': engine_time,
'load': page_load_time,
}
self.timings.append(timing)
def add_timing(self, engine_name: str, engine_time: float, page_load_time: float):
self.timings.append(Timing(engine_name, total=engine_time, load=page_load_time))
def get_timings(self):
return self.timings