mirror of
https://github.com/searxng/searxng.git
synced 2024-11-30 06:31:04 +00:00
[refactor] metrics.get_reliabilities() - make code more readable
- init stat values by None - drop round_or_none - don't try to get percentage if base is 'None' Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
parent
99aaf86b73
commit
7728e25b11
1 changed files with 51 additions and 38 deletions
|
@ -156,63 +156,76 @@ def get_reliabilities(engline_name_list, checker_results):
|
||||||
return reliabilities
|
return reliabilities
|
||||||
|
|
||||||
|
|
||||||
def round_or_none(number, digits):
|
|
||||||
'''return None if number is None
|
|
||||||
return 0 if number is 0
|
|
||||||
otherwise round number with "digits numbers.
|
|
||||||
'''
|
|
||||||
return round(number, digits) if number is not None else number
|
|
||||||
|
|
||||||
|
|
||||||
def get_engines_stats(engine_name_list):
|
def get_engines_stats(engine_name_list):
|
||||||
assert counter_storage is not None
|
assert counter_storage is not None
|
||||||
assert histogram_storage is not None
|
assert histogram_storage is not None
|
||||||
|
|
||||||
list_time = []
|
list_time = []
|
||||||
|
max_time_total = max_result_count = None
|
||||||
|
|
||||||
max_time_total = max_result_count = None # noqa
|
|
||||||
for engine_name in engine_name_list:
|
for engine_name in engine_name_list:
|
||||||
|
|
||||||
sent_count = counter('engine', engine_name, 'search', 'count', 'sent')
|
sent_count = counter('engine', engine_name, 'search', 'count', 'sent')
|
||||||
if sent_count == 0:
|
if sent_count == 0:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
result_count = histogram('engine', engine_name, 'result', 'count').percentage(50)
|
||||||
|
result_count_sum = histogram('engine', engine_name, 'result', 'count').sum
|
||||||
successful_count = counter('engine', engine_name, 'search', 'count', 'successful')
|
successful_count = counter('engine', engine_name, 'search', 'count', 'successful')
|
||||||
|
|
||||||
time_total = histogram('engine', engine_name, 'time', 'total').percentage(50)
|
time_total = histogram('engine', engine_name, 'time', 'total').percentage(50)
|
||||||
time_http = histogram('engine', engine_name, 'time', 'http').percentage(50)
|
|
||||||
time_total_p80 = histogram('engine', engine_name, 'time', 'total').percentage(80)
|
|
||||||
time_http_p80 = histogram('engine', engine_name, 'time', 'http').percentage(80)
|
|
||||||
time_total_p95 = histogram('engine', engine_name, 'time', 'total').percentage(95)
|
|
||||||
time_http_p95 = histogram('engine', engine_name, 'time', 'http').percentage(95)
|
|
||||||
|
|
||||||
result_count = histogram('engine', engine_name, 'result', 'count').percentage(50)
|
|
||||||
result_count_sum = histogram('engine', engine_name, 'result', 'count').sum
|
|
||||||
if successful_count and result_count_sum:
|
|
||||||
score = counter('engine', engine_name, 'score') # noqa
|
|
||||||
score_per_result = score / float(result_count_sum)
|
|
||||||
else:
|
|
||||||
score = score_per_result = 0.0
|
|
||||||
|
|
||||||
max_time_total = max(time_total or 0, max_time_total or 0)
|
max_time_total = max(time_total or 0, max_time_total or 0)
|
||||||
max_result_count = max(result_count or 0, max_result_count or 0)
|
max_result_count = max(result_count or 0, max_result_count or 0)
|
||||||
|
|
||||||
time_total_is_number = time_total is not None
|
stats = {
|
||||||
|
|
||||||
list_time.append({
|
|
||||||
'name': engine_name,
|
'name': engine_name,
|
||||||
'total': round_or_none(time_total, 1),
|
'total': None,
|
||||||
'total_p80': round_or_none(time_total_p80, 1),
|
'total_p80': None,
|
||||||
'total_p95': round_or_none(time_total_p95, 1),
|
'total_p95': None,
|
||||||
'http': round_or_none(time_http, 1),
|
'http': None,
|
||||||
'http_p80': round_or_none(time_http_p80, 1),
|
'http_p80': None,
|
||||||
'http_p95': round_or_none(time_http_p95, 1),
|
'http_p95': None,
|
||||||
'processing': round(time_total - (time_http or 0), 1) if time_total_is_number else None,
|
'processing': None,
|
||||||
'processing_p80': round(time_total_p80 - (time_http_p80 or 0), 1) if time_total_is_number else None,
|
'processing_p80': None,
|
||||||
'processing_p95': round(time_total_p95 - (time_http_p95 or 0), 1) if time_total_is_number else None,
|
'processing_p95': None,
|
||||||
'score': score,
|
'score': 0,
|
||||||
'score_per_result': score_per_result,
|
'score_per_result': 0,
|
||||||
'result_count': result_count,
|
'result_count': result_count,
|
||||||
})
|
}
|
||||||
|
|
||||||
|
if successful_count and result_count_sum:
|
||||||
|
score = counter('engine', engine_name, 'score')
|
||||||
|
|
||||||
|
stats['score'] = score
|
||||||
|
stats['score_per_result'] = score / float(result_count_sum)
|
||||||
|
|
||||||
|
time_http = histogram('engine', engine_name, 'time', 'http').percentage(50)
|
||||||
|
time_http_p80 = time_http_p95 = 0
|
||||||
|
|
||||||
|
if time_http is not None:
|
||||||
|
|
||||||
|
time_http_p80 = histogram('engine', engine_name, 'time', 'http').percentage(80)
|
||||||
|
time_http_p95 = histogram('engine', engine_name, 'time', 'http').percentage(95)
|
||||||
|
|
||||||
|
stats['http'] = round(time_http, 1)
|
||||||
|
stats['http_p80'] = round(time_http_p80, 1)
|
||||||
|
stats['http_p95'] = round(time_http_p95, 1)
|
||||||
|
|
||||||
|
if time_total is not None:
|
||||||
|
|
||||||
|
time_total_p80 = histogram('engine', engine_name, 'time', 'total').percentage(80)
|
||||||
|
time_total_p95 = histogram('engine', engine_name, 'time', 'total').percentage(95)
|
||||||
|
|
||||||
|
stats['total'] = round(time_total, 1)
|
||||||
|
stats['total_p80'] = round(time_total_p80, 1)
|
||||||
|
stats['total_p95'] = round(time_total_p95, 1)
|
||||||
|
|
||||||
|
stats['processing'] = round(time_total - (time_http or 0), 1)
|
||||||
|
stats['processing_p80'] = round(time_total_p80 - time_http_p80, 1)
|
||||||
|
stats['processing_p95'] = round(time_total_p95 - time_http_p95, 1)
|
||||||
|
|
||||||
|
list_time.append(stats)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'time': list_time,
|
'time': list_time,
|
||||||
'max_time': math.ceil(max_time_total or 0),
|
'max_time': math.ceil(max_time_total or 0),
|
||||||
|
|
Loading…
Reference in a new issue