summaryrefslogtreecommitdiff
path: root/searx/shared/redisdb.py
diff options
context:
space:
mode:
authorAlexandre FLAMENT <alexandre.flament@hesge.ch>2022-10-14 13:27:07 +0000
committerAlexandre Flament <alex@al-f.net>2022-11-05 17:45:52 +0100
commite92755d358df5b34b0181f48f8ba02c7f2939e8f (patch)
tree181d2b38112d9439f836e6d9a286f5355a311ffa /searx/shared/redisdb.py
parentfe419e355bf1527c51e3aee98495d08b89510320 (diff)
downloadsearxng-e92755d358df5b34b0181f48f8ba02c7f2939e8f.tar.gz
searxng-e92755d358df5b34b0181f48f8ba02c7f2939e8f.zip
Initialize Redis in searx/webapp.py
settings.yml: * The default URL was unix:///usr/local/searxng-redis/run/redis.sock?db=0 * The default URL is now "false" The default URL makes the log difficult to deal with: if the admin didn't install a Redis instance, the logs record a false error. It worked before because SearXNG initialized the Redis connection when the limiter started. In this commit, SearXNG initializes Redis in searx/webapp.py so various components can use Redis without taking care of the initialization step.
Diffstat (limited to 'searx/shared/redisdb.py')
-rw-r--r--searx/shared/redisdb.py27
1 files changed, 19 insertions, 8 deletions
diff --git a/searx/shared/redisdb.py b/searx/shared/redisdb.py
index d0071f72c..6cc4e46d1 100644
--- a/searx/shared/redisdb.py
+++ b/searx/shared/redisdb.py
@@ -26,20 +26,31 @@ import redis
from searx import get_setting
+OLD_REDIS_URL_DEFAULT_URL = 'unix:///usr/local/searxng-redis/run/redis.sock?db=0'
+"""This was the default Redis URL in settings.yml."""
+
+_CLIENT = None
logger = logging.getLogger('searx.shared.redisdb')
-_client = None
def client() -> redis.Redis:
- return _client
+ return _CLIENT
def initialize():
- global _client # pylint: disable=global-statement
+ global _CLIENT # pylint: disable=global-statement
+ redis_url = get_setting('redis.url')
try:
- _client = redis.Redis.from_url(get_setting('redis.url'))
- logger.info("connected redis: %s", get_setting('redis.url'))
- except redis.exceptions.ConnectionError as exc:
+ if redis_url:
+ _CLIENT = redis.Redis.from_url(redis_url)
+ logger.info("connected redis: %s", redis_url)
+ return True
+ except redis.exceptions.ConnectionError:
_pw = pwd.getpwuid(os.getuid())
- logger.error("[%s (%s)] can't connect redis DB ...", _pw.pw_name, _pw.pw_uid)
- logger.error(" %s", exc)
+ logger.exception("[%s (%s)] can't connect redis DB ...", _pw.pw_name, _pw.pw_uid)
+ if redis_url == OLD_REDIS_URL_DEFAULT_URL:
+ logger.info(
+ "You can safely ignore the above Redis error if you don't use Redis."
+ "You can remove this error by setting redis.url to false in your settings.yml."
+ )
+ return False