From d473407ec97107022ccbdd366559001b1ec162d8 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Sun, 17 Jan 2021 16:14:16 +0100 Subject: [PATCH] [fix] checker: fix engine statistics Without this commit, the URL /stats/errors shows percentage above 100% after the checker has run. --- searx/metrology/error_recorder.py | 4 ++-- searx/search/checker/impl.py | 3 +++ searx/search/processors/abstract.py | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/searx/metrology/error_recorder.py b/searx/metrology/error_recorder.py index bd8404ad1..f533e4e8b 100644 --- a/searx/metrology/error_recorder.py +++ b/searx/metrology/error_recorder.py @@ -53,9 +53,9 @@ def add_error_context(engine_name: str, error_context: ErrorContext) -> None: def get_trace(traces): for trace in reversed(traces): split_filename = trace.filename.split('/') - if len(split_filename) > 3 and '/'.join(split_filename[-3:-1]) == 'searx/engines': + if '/'.join(split_filename[-3:-1]) == 'searx/engines': return trace - if len(split_filename) > 3 and '/'.join(split_filename[-4:-1]) == 'searx/search/processors': + if '/'.join(split_filename[-4:-1]) == 'searx/search/processors': return trace return traces[-1] diff --git a/searx/search/checker/impl.py b/searx/search/checker/impl.py index 71a941f73..244536f1b 100644 --- a/searx/search/checker/impl.py +++ b/searx/search/checker/impl.py @@ -4,6 +4,7 @@ import typing import types import functools import itertools +import threading from time import time from urllib.parse import urlparse @@ -377,6 +378,8 @@ class Checker: engineref_category = search_query.engineref_list[0].category params = self.processor.get_params(search_query, engineref_category) if params is not None: + with threading.RLock(): + self.processor.engine.stats['sent_search_count'] += 1 self.processor.search(search_query.query, params, result_container, time(), 5) return result_container diff --git a/searx/search/processors/abstract.py b/searx/search/processors/abstract.py index eb8d296ec..3a853d49e 100644 --- a/searx/search/processors/abstract.py +++ b/searx/search/processors/abstract.py @@ -1,13 +1,13 @@ # SPDX-License-Identifier: AGPL-3.0-or-later -from abc import abstractmethod +from abc import abstractmethod, ABC from searx import logger logger = logger.getChild('searx.search.processor') -class EngineProcessor: +class EngineProcessor(ABC): def __init__(self, engine, engine_name): self.engine = engine