forked from zaclys/searxng
		
	Merge pull request #1954 from dalf/fix.redis.init.2
[fix] follow up of PR-1856
This commit is contained in:
		
						commit
						9e9f57e48b
					
				
					 14 changed files with 30 additions and 25 deletions
				
			
		| 
						 | 
				
			
			@ -294,7 +294,7 @@ Global Settings
 | 
			
		|||
 | 
			
		||||
.. _Redis.from_url(url): https://redis-py.readthedocs.io/en/stable/connections.html#redis.client.Redis.from_url
 | 
			
		||||
 | 
			
		||||
A redis DB can be connected by an URL, in :py:obj:`searx.shared.redisdb` you
 | 
			
		||||
A redis DB can be connected by an URL, in :py:obj:`searx.redisdb` you
 | 
			
		||||
will find a description to test your redis connection in SerXNG.  When using
 | 
			
		||||
sockets, don't forget to check the access rights on the socket::
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -239,8 +239,8 @@ For example on Fedora (RHEL): If you try to install a redis DB with socket
 | 
			
		|||
communication and you want to connect to it from the SearXNG uWSGI, you will see a
 | 
			
		||||
*Permission denied* in the log of your instance::
 | 
			
		||||
 | 
			
		||||
  ERROR:searx.shared.redis: [searxng (993)] can't connect redis DB ...
 | 
			
		||||
  ERROR:searx.shared.redis:   Error 13 connecting to unix socket: /usr/local/searxng-redis/run/redis.sock. Permission denied.
 | 
			
		||||
  ERROR:searx.redisdb: [searxng (993)] can't connect redis DB ...
 | 
			
		||||
  ERROR:searx.redisdb:   Error 13 connecting to unix socket: /usr/local/searxng-redis/run/redis.sock. Permission denied.
 | 
			
		||||
  ERROR:searx.plugins.limiter: init limiter DB failed!!!
 | 
			
		||||
 | 
			
		||||
Even if your *searxng* user of the uWSGI process is added to additional groups
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -132,5 +132,5 @@ to see if there are some left overs.  In this example there exists a *old*
 | 
			
		|||
   INFO:  [OK] (old) account 'filtron' does not exists
 | 
			
		||||
   INFO:  [OK] (old) account 'morty' does not exists
 | 
			
		||||
   ...
 | 
			
		||||
   INFO    searx.shared                  : Use shared_simple implementation
 | 
			
		||||
   INFO    searx.shared.redis            : connected redis DB --> default
 | 
			
		||||
   INFO    searx.redisdb                 : connecting to Redis db=0 path='/usr/local/searxng-redis/run/redis.sock'
 | 
			
		||||
   INFO    searx.redisdb                 : connected to Redis
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,5 +4,5 @@
 | 
			
		|||
Redis DB
 | 
			
		||||
========
 | 
			
		||||
 | 
			
		||||
.. automodule:: searx.shared.redisdb
 | 
			
		||||
.. automodule:: searx.redisdb
 | 
			
		||||
  :members:
 | 
			
		||||
							
								
								
									
										12
									
								
								manage
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								manage
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -32,6 +32,12 @@ export NODE_MINIMUM_VERSION="16.13.0"
 | 
			
		|||
BLACK_OPTIONS=("--target-version" "py37" "--line-length" "120" "--skip-string-normalization")
 | 
			
		||||
BLACK_TARGETS=("--exclude" "searx/static,searx/languages.py" "--include" 'searxng.msg|\.pyi?$' "searx" "searxng_extra" "tests")
 | 
			
		||||
 | 
			
		||||
_dev_redis_sock="/usr/local/searxng-redis/run/redis.sock"
 | 
			
		||||
# set SEARXNG_REDIS_URL if it is not defined and "{_dev_redis_sock}" exists.
 | 
			
		||||
if [ -S "${_dev_redis_sock}" ] && [ -z "${SEARXNG_REDIS_URL}" ]; then
 | 
			
		||||
    export SEARXNG_REDIS_URL="unix://${_dev_redis_sock}?db=0"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
pylint.FILES() {
 | 
			
		||||
 | 
			
		||||
    # List files tagged by comment:
 | 
			
		||||
| 
						 | 
				
			
			@ -65,6 +71,8 @@ help() {
 | 
			
		|||
    cat <<EOF
 | 
			
		||||
buildenv:
 | 
			
		||||
  rebuild ./utils/brand.env
 | 
			
		||||
webapp.:
 | 
			
		||||
  run       : run developer instance
 | 
			
		||||
weblate.:
 | 
			
		||||
  push.translations: push translation changes from SearXNG to Weblate's counterpart
 | 
			
		||||
  to.translations: Update 'translations' branch with last additions from Weblate.
 | 
			
		||||
| 
						 | 
				
			
			@ -121,6 +129,10 @@ pygments.:
 | 
			
		|||
EOF
 | 
			
		||||
    go.help
 | 
			
		||||
    static_help
 | 
			
		||||
    cat <<EOF
 | 
			
		||||
environment ...
 | 
			
		||||
  SEARXNG_REDIS_URL : ${SEARXNG_REDIS_URL}
 | 
			
		||||
EOF
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,7 +16,7 @@ Enable the plugin in ``settings.yml``:
 | 
			
		|||
import re
 | 
			
		||||
from flask import request
 | 
			
		||||
 | 
			
		||||
from searx.shared import redisdb
 | 
			
		||||
from searx import redisdb
 | 
			
		||||
from searx.redislib import incr_sliding_window
 | 
			
		||||
 | 
			
		||||
name = "Request limiter"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,8 +7,8 @@
 | 
			
		|||
This implementation uses the :ref:`settings redis` setup from ``settings.yml``.
 | 
			
		||||
A redis DB connect can be tested by::
 | 
			
		||||
 | 
			
		||||
  >>> from searx.shared import redisdb
 | 
			
		||||
  >>> redisdb.init()
 | 
			
		||||
  >>> from searx import redisdb
 | 
			
		||||
  >>> redisdb.initialize()
 | 
			
		||||
  True
 | 
			
		||||
  >>> db = redisdb.client()
 | 
			
		||||
  >>> db.set("foo", "bar")
 | 
			
		||||
| 
						 | 
				
			
			@ -30,7 +30,7 @@ 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')
 | 
			
		||||
logger = logging.getLogger(__name__)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def client() -> redis.Redis:
 | 
			
		||||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ from typing_extensions import TypedDict, Literal
 | 
			
		|||
import redis.exceptions
 | 
			
		||||
 | 
			
		||||
from searx import logger, settings, searx_debug
 | 
			
		||||
from searx.shared.redisdb import client as get_redis_client
 | 
			
		||||
from searx.redisdb import client as get_redis_client
 | 
			
		||||
from searx.exceptions import SearxSettingsException
 | 
			
		||||
from searx.search.processors import PROCESSORS
 | 
			
		||||
from searx.search.checker import Checker
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,7 @@ import time
 | 
			
		|||
import importlib
 | 
			
		||||
from typing import Callable
 | 
			
		||||
 | 
			
		||||
from searx.shared.redisdb import client as get_redis_client
 | 
			
		||||
from searx.redisdb import client as get_redis_client
 | 
			
		||||
from searx.redislib import lua_script_storage
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -174,7 +174,7 @@ SCHEMA = {
 | 
			
		|||
        'default_http_headers': SettingsValue(dict, {}),
 | 
			
		||||
    },
 | 
			
		||||
    'redis': {
 | 
			
		||||
        'url': SettingsValue((None, False, str), False),
 | 
			
		||||
        'url': SettingsValue((None, False, str), False, 'SEARXNG_REDIS_URL'),
 | 
			
		||||
    },
 | 
			
		||||
    'ui': {
 | 
			
		||||
        'static_path': SettingsDirectoryValue(str, os.path.join(searx_dir, 'static')),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +0,0 @@
 | 
			
		|||
# SPDX-License-Identifier: AGPL-3.0-or-later
 | 
			
		||||
# lint: pylint
 | 
			
		||||
"""Initialization of a *shared* storage.
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
from . import redisdb
 | 
			
		||||
| 
						 | 
				
			
			@ -120,7 +120,7 @@ from searx.locales import (
 | 
			
		|||
# renaming names from searx imports ...
 | 
			
		||||
from searx.autocomplete import search_autocomplete, backends as autocomplete_backends
 | 
			
		||||
from searx.languages import language_codes as languages
 | 
			
		||||
from searx.shared.redisdb import initialize as redis_initialize
 | 
			
		||||
from searx.redisdb import initialize as redis_initialize
 | 
			
		||||
from searx.search import SearchWithPlugins, initialize as search_initialize
 | 
			
		||||
from searx.network import stream as http_stream, set_context_network_name
 | 
			
		||||
from searx.search.checker import get_result as checker_get_result
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -295,7 +295,7 @@ In your instance, redis DB connector is configured at:
 | 
			
		|||
 | 
			
		||||
    ${redis_url}
 | 
			
		||||
"
 | 
			
		||||
    if searxng.instance.exec python -c "from searx.shared import redisdb; redisdb.initialize() or exit(42)"; then
 | 
			
		||||
    if searxng.instance.exec python -c "from searx import redisdb; redisdb.initialize() or exit(42)"; then
 | 
			
		||||
        info_msg "SearXNG instance is able to connect redis DB."
 | 
			
		||||
        return
 | 
			
		||||
    fi
 | 
			
		||||
| 
						 | 
				
			
			@ -317,8 +317,8 @@ In your instance, redis DB connector is configured at:
 | 
			
		|||
            # fedora35 there is v2.0.20 installed --> no way to get additional
 | 
			
		||||
            # groups on fedora's tyrant mode.
 | 
			
		||||
            #
 | 
			
		||||
            # ERROR:searx.shared.redis: [searxng (993)] can't connect redis DB ...
 | 
			
		||||
            # ERROR:searx.shared.redis:   Error 13 connecting to unix socket: /usr/local/searxng-redis/run/redis.sock. Permission denied.
 | 
			
		||||
            # ERROR:searx.redisdb: [searxng (993)] can't connect redis DB ...
 | 
			
		||||
            # ERROR:searx.redisdb:   Error 13 connecting to unix socket: /usr/local/searxng-redis/run/redis.sock. Permission denied.
 | 
			
		||||
            # ERROR:searx.plugins.limiter: init limiter DB failed!!!
 | 
			
		||||
            #
 | 
			
		||||
            # $ ps -aef | grep '/usr/sbin/uwsgi --ini searxng.ini'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,8 +26,7 @@ if os.path.isfile(OLD_SETTING):
 | 
			
		|||
        ))
 | 
			
		||||
    warnings.warn(msg, DeprecationWarning)
 | 
			
		||||
 | 
			
		||||
from searx.shared import redisdb
 | 
			
		||||
from searx import get_setting
 | 
			
		||||
from searx import redisdb, get_setting
 | 
			
		||||
 | 
			
		||||
if not redisdb.initialize():
 | 
			
		||||
    warnings.warn("can't connect to redis DB at: %s" % get_setting('redis.url'), RuntimeWarning, stacklevel=2)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue