소스 검색

[enh] add init function to engines which loads parallel

Adam Tauber 7 년 전
부모
커밋
78365ffb8a
3개의 변경된 파일17개의 추가작업 그리고 4개의 파일을 삭제
  1. 10
    1
      searx/engines/__init__.py
  2. 5
    2
      searx/engines/soundcloud.py
  3. 2
    1
      searx/engines/wolframalpha_noapi.py

+ 10
- 1
searx/engines/__init__.py 파일 보기

16
 (C) 2013- by Adam Tauber, <asciimoo@gmail.com>
16
 (C) 2013- by Adam Tauber, <asciimoo@gmail.com>
17
 '''
17
 '''
18
 
18
 
19
-from os.path import realpath, dirname
20
 import sys
19
 import sys
20
+import threading
21
+from os.path import realpath, dirname
21
 from flask_babel import gettext
22
 from flask_babel import gettext
22
 from operator import itemgetter
23
 from operator import itemgetter
23
 from json import loads
24
 from json import loads
84
     for engine_attr in dir(engine):
85
     for engine_attr in dir(engine):
85
         if engine_attr.startswith('_'):
86
         if engine_attr.startswith('_'):
86
             continue
87
             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
87
         if getattr(engine, engine_attr) is None:
96
         if getattr(engine, engine_attr) is None:
88
             logger.error('Missing engine config attribute: "{0}.{1}"'
97
             logger.error('Missing engine config attribute: "{0}.{1}"'
89
                          .format(engine.name, engine_attr))
98
                          .format(engine.name, engine_attr))

+ 5
- 2
searx/engines/soundcloud.py 파일 보기

41
     'data-src="https://w.soundcloud.com/player/?url={uri}"></iframe>'
41
     'data-src="https://w.soundcloud.com/player/?url={uri}"></iframe>'
42
 
42
 
43
 cid_re = re.compile(r'client_id:"([^"]*)"', re.I | re.U)
43
 cid_re = re.compile(r'client_id:"([^"]*)"', re.I | re.U)
44
+guest_client_id = ''
44
 
45
 
45
 
46
 
46
 def get_client_id():
47
 def get_client_id():
63
     return ""
64
     return ""
64
 
65
 
65
 
66
 
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()
68
 
71
 
69
 
72
 
70
 # do search-request
73
 # do search-request

+ 2
- 1
searx/engines/wolframalpha_noapi.py 파일 보기

55
     return token
55
     return token
56
 
56
 
57
 
57
 
58
-obtain_token()
58
+def init():
59
+    obtain_token()
59
 
60
 
60
 
61
 
61
 # do search-request
62
 # do search-request