add initial support for offline engines && command engine

This commit is contained in:
Noémi Ványi 2019-09-23 17:14:32 +02:00
parent 2946c5f106
commit a6f20caf32
19 changed files with 228 additions and 61 deletions

View file

@ -27,7 +27,7 @@ from json import loads
from requests import get
from searx import settings
from searx import logger
from searx.utils import load_module, match_language
from searx.utils import load_module, match_language, get_engine_from_settings
logger = logger.getChild('engines')
@ -53,7 +53,8 @@ engine_default_args = {'paging': False,
'disabled': False,
'suspend_end_time': 0,
'continuous_errors': 0,
'time_range_support': False}
'time_range_support': False,
'offline': False}
def load_engine(engine_data):
@ -128,14 +129,17 @@ def load_engine(engine_data):
engine.stats = {
'result_count': 0,
'search_count': 0,
'page_load_time': 0,
'page_load_count': 0,
'engine_time': 0,
'engine_time_count': 0,
'score_count': 0,
'errors': 0
}
if not engine.offline:
engine.stats['page_load_time'] = 0
engine.stats['page_load_count'] = 0
for category_name in engine.categories:
categories.setdefault(category_name, []).append(engine)
@ -173,11 +177,6 @@ def get_engines_stats():
results_num = \
engine.stats['result_count'] / float(engine.stats['search_count'])
if engine.stats['page_load_count'] != 0:
load_times = engine.stats['page_load_time'] / float(engine.stats['page_load_count']) # noqa
else:
load_times = 0
if engine.stats['engine_time_count'] != 0:
this_engine_time = engine.stats['engine_time'] / float(engine.stats['engine_time_count']) # noqa
else:
@ -189,14 +188,19 @@ def get_engines_stats():
else:
score = score_per_result = 0.0
max_pageload = max(load_times, max_pageload)
if not engine.offline:
load_times = 0
if engine.stats['page_load_count'] != 0:
load_times = engine.stats['page_load_time'] / float(engine.stats['page_load_count']) # noqa
max_pageload = max(load_times, max_pageload)
pageloads.append({'avg': load_times, 'name': engine.name})
max_engine_times = max(this_engine_time, max_engine_times)
max_results = max(results_num, max_results)
max_score = max(score, max_score)
max_score_per_result = max(score_per_result, max_score_per_result)
max_errors = max(max_errors, engine.stats['errors'])
pageloads.append({'avg': load_times, 'name': engine.name})
engine_times.append({'avg': this_engine_time, 'name': engine.name})
results.append({'avg': results_num, 'name': engine.name})
scores.append({'avg': score, 'name': engine.name})
@ -255,7 +259,7 @@ def initialize_engines(engine_list):
load_engines(engine_list)
def engine_init(engine_name, init_fn):
init_fn()
init_fn(get_engine_from_settings(engine_name))
logger.debug('%s engine: Initialized', engine_name)
for engine_name, engine in engines.items():

View file

@ -66,7 +66,7 @@ def get_client_id():
return ""
def init():
def init(engine_settings=None):
global guest_client_id
# api-key
guest_client_id = get_client_id()

View file

@ -55,7 +55,7 @@ def obtain_token():
return token
def init():
def init(engine_settings=None):
obtain_token()