From 6e2872f43625aba71eba019e16f7fbd74743f590 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Tue, 5 Jan 2021 11:22:48 +0100 Subject: [enh] add searx.shared shared dictionary between the workers (UWSGI or werkzeug) scheduler: run a task once every x seconds (UWSGI or werkzeug) --- searx/shared/__init__.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 searx/shared/__init__.py (limited to 'searx/shared/__init__.py') diff --git a/searx/shared/__init__.py b/searx/shared/__init__.py new file mode 100644 index 000000000..83d3a2742 --- /dev/null +++ b/searx/shared/__init__.py @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later + +import logging + +logger = logging.getLogger('searx.shared') + +try: + import uwsgi +except: + # no uwsgi + from .shared_simple import SimpleSharedDict as SharedDict, schedule + logger.info('Use shared_simple implementation') +else: + try: + uwsgi.cache_update('dummy', b'dummy') + if uwsgi.cache_get('dummy') != b'dummy': + raise Exception() + except: + # uwsgi.ini configuration problem: disable all scheduling + logger.error('uwsgi.ini configuration error, add this line to your uwsgi.ini\n' + 'cache2 = name=searxcache,items=2000,blocks=2000,blocksize=4096,bitmap=1') + from .shared_simple import SimpleSharedDict as SharedDict + + def schedule(delay, func, *args): + pass + else: + # uwsgi + from .shared_uwsgi import UwsgiCacheSharedDict as SharedDict, schedule + logger.info('Use shared_uwsgi implementation') + +storage = SharedDict() -- cgit v1.2.3 From 912c7e975c3943db798d748fa48d460467b66d30 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Wed, 13 Jan 2021 14:07:39 +0100 Subject: [fix] checker: don't run the checker when uwsgi is not properly configured Before this commit, even with the scheduler disabled, the checker was running at least once for each uwsgi worker. --- searx/shared/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'searx/shared/__init__.py') diff --git a/searx/shared/__init__.py b/searx/shared/__init__.py index 83d3a2742..cbe24d239 100644 --- a/searx/shared/__init__.py +++ b/searx/shared/__init__.py @@ -22,7 +22,7 @@ else: from .shared_simple import SimpleSharedDict as SharedDict def schedule(delay, func, *args): - pass + return False else: # uwsgi from .shared_uwsgi import UwsgiCacheSharedDict as SharedDict, schedule -- cgit v1.2.3