mirror of
https://github.com/searxng/searxng.git
synced 2025-11-27 08:45:06 -05:00
[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>
This commit is contained in:
parent
3f30831640
commit
989b49335c
@ -270,7 +270,14 @@ def load_engines(engine_list: list[dict[str, t.Any]]):
|
|||||||
categories.clear()
|
categories.clear()
|
||||||
categories['general'] = []
|
categories['general'] = []
|
||||||
for engine_data in engine_list:
|
for engine_data in engine_list:
|
||||||
|
if engine_data.get("inactive") is True:
|
||||||
|
continue
|
||||||
engine = load_engine(engine_data)
|
engine = load_engine(engine_data)
|
||||||
if engine:
|
if engine:
|
||||||
register_engine(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
|
return engines
|
||||||
|
|||||||
@ -51,7 +51,6 @@ class ProcessorMap(dict[str, EngineProcessor]):
|
|||||||
eng_name: str = eng_settings["name"]
|
eng_name: str = eng_settings["name"]
|
||||||
|
|
||||||
if eng_settings.get("inactive", False) is True:
|
if eng_settings.get("inactive", False) is True:
|
||||||
logger.info("Engine of name '%s' is inactive.", eng_name)
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
eng_obj = engines.engines.get(eng_name)
|
eng_obj = engines.engines.get(eng_name)
|
||||||
|
|||||||
@ -61,7 +61,7 @@ class TestEnginesInit(SearxTestCase):
|
|||||||
with self.assertLogs('searx.engines', level='ERROR') as cm: # pylint: disable=invalid-name
|
with self.assertLogs('searx.engines', level='ERROR') as cm: # pylint: disable=invalid-name
|
||||||
engines.load_engines(engine_list)
|
engines.load_engines(engine_list)
|
||||||
self.assertEqual(len(engines.engines), 0)
|
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):
|
def test_missing_engine_field(self):
|
||||||
settings['outgoing']['using_tor_proxy'] = False
|
settings['outgoing']['using_tor_proxy'] = False
|
||||||
@ -72,5 +72,5 @@ class TestEnginesInit(SearxTestCase):
|
|||||||
engines.load_engines(engine_list)
|
engines.load_engines(engine_list)
|
||||||
self.assertEqual(len(engines.engines), 0)
|
self.assertEqual(len(engines.engines), 0)
|
||||||
self.assertEqual(
|
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"'
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user