Browse Source

[fix] checker: fix engine statistics

Without this commit, the URL /stats/errors shows percentage above 100% after the checker has run.
Alexandre Flament 4 years ago
parent
commit
d473407ec9

+ 2 - 2
searx/metrology/error_recorder.py

@@ -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]
 
 

+ 3 - 0
searx/search/checker/impl.py

@@ -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
 
 

+ 2 - 2
searx/search/processors/abstract.py

@@ -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