[fix] checker: fix engine statistics

Without this commit, the URL /stats/errors shows percentage above 100% after the checker has run.
This commit is contained in:
Alexandre Flament 2021-01-17 16:14:16 +01:00
parent ca76f3119a
commit d473407ec9
3 changed files with 7 additions and 4 deletions

View File

@ -53,9 +53,9 @@ def add_error_context(engine_name: str, error_context: ErrorContext) -> None:
def get_trace(traces): def get_trace(traces):
for trace in reversed(traces): for trace in reversed(traces):
split_filename = trace.filename.split('/') 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 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 trace
return traces[-1] return traces[-1]

View File

@ -4,6 +4,7 @@ import typing
import types import types
import functools import functools
import itertools import itertools
import threading
from time import time from time import time
from urllib.parse import urlparse from urllib.parse import urlparse
@ -377,6 +378,8 @@ class Checker:
engineref_category = search_query.engineref_list[0].category engineref_category = search_query.engineref_list[0].category
params = self.processor.get_params(search_query, engineref_category) params = self.processor.get_params(search_query, engineref_category)
if params is not None: 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) self.processor.search(search_query.query, params, result_container, time(), 5)
return result_container return result_container

View File

@ -1,13 +1,13 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
from abc import abstractmethod from abc import abstractmethod, ABC
from searx import logger from searx import logger
logger = logger.getChild('searx.search.processor') logger = logger.getChild('searx.search.processor')
class EngineProcessor: class EngineProcessor(ABC):
def __init__(self, engine, engine_name): def __init__(self, engine, engine_name):
self.engine = engine self.engine = engine