on master help sign in
[enh] add init function to engines which loads parallel
commit78365ffb8a083ca3e3ea905db12bdac9f273f460 authorAdam Tauber <asciimoo@gmail.com> dateTue 6 Jun 2017, 22:20 (9 years ago) parentf82646f
3 files changed+17−4
searx/engines/__init__.py+10−1 searx/engines/soundcloud.py+5−2 searx/engines/wolframalpha_noapi.py+2−1
searx/engines/__init__.py+10−1
@@ -16,8 +16,9 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
1616(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
1717'''
1818
19−from os.path import realpath, dirname
2019import sys
20+import threading
21+from os.path import realpath, dirname
2122from flask_babel import gettext
2223from operator import itemgetter
2324from json import loads
@@ -84,6 +85,14 @@ def load_engine(engine_data):
8485 for engine_attr in dir(engine):
8586 if engine_attr.startswith('_'):
8687 continue
88+ if engine_attr == 'init':
89+ init_fn = getattr(engine, engine_attr)
90+ def engine_init():
91+ init_fn()
92+ logger.debug('%s engine initialized', engine_data['name'])
93+ logger.debug('Starting background initialization of %s engine', engine_data['name'])
94+ threading.Thread(target=engine_init).start()
95+ continue
8796 if getattr(engine, engine_attr) is None:
8897 logger.error('Missing engine config attribute: "{0}.{1}"'
8998 .format(engine.name, engine_attr))
searx/engines/soundcloud.py+5−2
@@ -41,6 +41,7 @@ embedded_url = '<iframe width="100%" height="166" ' +\
4141 'data-src="https://w.soundcloud.com/player/?url={uri}"></iframe>'
4242
4343cid_re = re.compile(r'client_id:"([^"]*)"', re.I | re.U)
44+guest_client_id = ''
4445
4546
4647def get_client_id():
@@ -63,8 +64,10 @@ def get_client_id():
6364 return ""
6465
6566
66−# api-key
67−guest_client_id = get_client_id()
67+def init():
68+ global guest_client_id
69+ # api-key
70+ guest_client_id = get_client_id()
6871
6972
7073# do search-request
searx/engines/wolframalpha_noapi.py+2−1
@@ -55,7 +55,8 @@ def obtain_token():
5555 return token
5656
5757
58−obtain_token()
58+def init():
59+ obtain_token()
5960
6061
6162# do search-request