on master help sign in
[fix] initialize redis engine at the right time
b2ed65eAdam Tauber
searx/engines/redis_server.py+22−13
@@ -19,26 +19,35 @@ paging = False
19result_template = 'key-value.html'
19result_template = 'key-value.html'
20exact_match_only = True
20exact_match_only = True
21
21
22+_redis_client = None
23+
24+
25+def init(_):
26+ connect()
27+
28+
29+def connect():
30+ global _redis_client
22−redis_client = redis.StrictRedis(
31+ _redis_client = redis.StrictRedis(
23− host=host,
32+ host=host,
24− port=port,
33+ port=port,
25− db=db,
34+ db=db,
26− password=password or None,
35+ password=password or None,
27− decode_responses=True,
36+ decode_responses=True,
28−)
37+ )
29
38
30
39
31def search(query, params):
40def search(query, params):
32 if not exact_match_only:
41 if not exact_match_only:
33 return search_keys(query)
42 return search_keys(query)
34− ret = redis_client.hgetall(query)
43+ ret = _redis_client.hgetall(query)
35 if ret:
44 if ret:
36 ret['template'] = result_template
45 ret['template'] = result_template
37 return [ret]
46 return [ret]
38 if ' ' in query:
47 if ' ' in query:
39 qset, rest = query.split(' ', 1)
48 qset, rest = query.split(' ', 1)
40 ret = []
49 ret = []
41− for res in redis_client.hscan_iter(qset, match='*{}*'.format(rest)):
50+ for res in _redis_client.hscan_iter(qset, match='*{}*'.format(rest)):
42 ret.append({res[0]: res[1], 'template': result_template})
51 ret.append({res[0]: res[1], 'template': result_template})
43 return ret
52 return ret
44 return []
53 return []
@@ -46,13 +55,13 @@ def search(query, params):
46
55
47def search_keys(query):
56def search_keys(query):
48 ret = []
57 ret = []
49− for key in redis_client.scan_iter(match='*{}*'.format(query)):
58+ for key in _redis_client.scan_iter(match='*{}*'.format(query)):
50− key_type = redis_client.type(key)
59+ key_type = _redis_client.type(key)
51 res = None
60 res = None
52 if key_type == 'hash':
61 if key_type == 'hash':
53− res = redis_client.hgetall(key)
62+ res = _redis_client.hgetall(key)
54 elif key_type == 'list':
63 elif key_type == 'list':
55− res = dict(enumerate(redis_client.lrange(key, 0, -1)))
64+ res = dict(enumerate(_redis_client.lrange(key, 0, -1)))
56 if res:
65 if res:
57 res['template'] = result_template
66 res['template'] = result_template
58 res['redis_key'] = key
67 res['redis_key'] = key