diff options
| author | Markus Heiser <markus.heiser@darmarit.de> | 2025-11-23 12:30:14 +0100 |
|---|---|---|
| committer | Markus Heiser <markus.heiser@darmarIT.de> | 2025-11-25 06:25:45 +0100 |
| commit | 989b49335c54b23f274f0b969893a43de5b6c31c (patch) | |
| tree | 15451e3ee94598a4c4ace2a8228e630f146488c5 | |
| parent | 3f3083164096ecb1ec57cf84d6242c296d450a78 (diff) | |
[fix] engines initialization - if engine load fails, set to inactive
- if engine load fails, set the engine to inactive
- dont' load a engine, when the config says its inactive
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
| -rw-r--r-- | searx/engines/__init__.py | 7 | ||||
| -rw-r--r-- | searx/search/processors/__init__.py | 1 | ||||
| -rw-r--r-- | tests/unit/test_engines_init.py | 4 |
3 files changed, 9 insertions, 3 deletions
diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py index 30ef7fd75..8b2bcad48 100644 --- a/searx/engines/__init__.py +++ b/searx/engines/__init__.py @@ -270,7 +270,14 @@ def load_engines(engine_list: list[dict[str, t.Any]]): categories.clear() categories['general'] = [] for engine_data in engine_list: + if engine_data.get("inactive") is True: + continue engine = load_engine(engine_data) if engine: register_engine(engine) + else: + # if an engine can't be loaded (if for example the engine is missing + # tor or some other requirements) its set to inactive! + logger.error("loading engine %s failed: set engine to inactive!", engine_data.get("name", "???")) + engine_data["inactive"] = True return engines diff --git a/searx/search/processors/__init__.py b/searx/search/processors/__init__.py index 1c248c64e..1c9e0be3c 100644 --- a/searx/search/processors/__init__.py +++ b/searx/search/processors/__init__.py @@ -51,7 +51,6 @@ class ProcessorMap(dict[str, EngineProcessor]): eng_name: str = eng_settings["name"] if eng_settings.get("inactive", False) is True: - logger.info("Engine of name '%s' is inactive.", eng_name) continue eng_obj = engines.engines.get(eng_name) diff --git a/tests/unit/test_engines_init.py b/tests/unit/test_engines_init.py index b91b67162..bcd6ad084 100644 --- a/tests/unit/test_engines_init.py +++ b/tests/unit/test_engines_init.py @@ -61,7 +61,7 @@ class TestEnginesInit(SearxTestCase): with self.assertLogs('searx.engines', level='ERROR') as cm: # pylint: disable=invalid-name engines.load_engines(engine_list) self.assertEqual(len(engines.engines), 0) - self.assertEqual(cm.output, ['ERROR:searx.engines:An engine does not have a "name" field']) + self.assertEqual(cm.output[0], 'ERROR:searx.engines:An engine does not have a "name" field') def test_missing_engine_field(self): settings['outgoing']['using_tor_proxy'] = False @@ -72,5 +72,5 @@ class TestEnginesInit(SearxTestCase): engines.load_engines(engine_list) self.assertEqual(len(engines.engines), 0) self.assertEqual( - cm.output, ['ERROR:searx.engines:The "engine" field is missing for the engine named "engine2"'] + cm.output[0], 'ERROR:searx.engines:The "engine" field is missing for the engine named "engine2"' ) |