From dca83944b588be3ec9e49486daea6cf15ef58f78 Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Fri, 7 Jan 2022 17:29:32 +0100 Subject: [PATCH] [fix] redis: don't create a new connection at each client() call Suggested-by: @dalf https://github.com/searxng/searxng/pull/686#pullrequestreview-844942973 Signed-off-by: Markus Heiser --- searx/shared/redisdb.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/searx/shared/redisdb.py b/searx/shared/redisdb.py index 613b82a38..da71d169c 100644 --- a/searx/shared/redisdb.py +++ b/searx/shared/redisdb.py @@ -24,10 +24,16 @@ import redis from searx import get_setting logger = logging.getLogger('searx.shared.redis') +_client = None def client(): - return redis.Redis.from_url(get_setting('redis.url')) + global _client # pylint: disable=global-statement + if _client is None: + # not thread safe: in the worst case scenario, two or more clients are + # initialized only one is kept, the others are garbage collected. + _client = redis.Redis.from_url(get_setting('redis.url')) + return _client def init():