mirror of
https://github.com/searxng/searxng
synced 2024-01-01 19:24:07 +01:00

- implement shared_redis.RedisCacheSharedDict to store key/value pairs in the redis DB. The default key_prefix is 'SearXNG_SharedDict'. - simplify searx.shared and import RedisCacheSharedDict, set key_prefix to 'SearXNG_storage' Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
# lint: pylint
|
|
"""Module implements a :py:obj:`storage`."""
|
|
|
|
__all__ = ['schedule', 'storage']
|
|
|
|
import logging
|
|
import importlib
|
|
|
|
from . import redisdb
|
|
from . import shared_redis
|
|
from . import shared_simple
|
|
|
|
logger = logging.getLogger('searx.shared')
|
|
|
|
SharedDict = None
|
|
schedule = None
|
|
|
|
if redisdb.init():
|
|
SharedDict = shared_redis.RedisCacheSharedDict
|
|
logger.info('use redis DB for SharedDict')
|
|
|
|
try:
|
|
from . import shared_uwsgi
|
|
uwsgi = importlib.import_module('uwsgi')
|
|
uwsgi.cache_update('dummy', b'dummy')
|
|
if uwsgi.cache_get('dummy') != b'dummy':
|
|
raise Exception()
|
|
|
|
schedule = shared_uwsgi.schedule
|
|
logger.info('use shared_uwsgi for schedule')
|
|
|
|
if SharedDict is None:
|
|
SharedDict = shared_simple.SimpleSharedDict
|
|
logger.info('use shared_uwsgi for SharedDict')
|
|
|
|
except Exception: # pylint: disable=broad-except
|
|
logger.debug('skip uwsgi setup ..', exc_info=1)
|
|
|
|
if SharedDict is None:
|
|
logger.info('use shared_simple for SharedDict')
|
|
SharedDict = shared_simple.SimpleSharedDict
|
|
|
|
if schedule is None:
|
|
logger.info('use shared_simple for schedule')
|
|
schedule = shared_simple.schedule
|
|
|
|
storage = SharedDict(key_prefix='SearXNG_storage')
|