|  | # SPDX-License-Identifier: AGPL-3.0-or-later
 | 
						
						
						
							|  | 
 | 
						
						
						
							|  | import logging
 | 
						
						
						
							|  | import importlib
 | 
						
						
						
							|  | 
 | 
						
						
						
							|  | logger = logging.getLogger('searx.shared')
 | 
						
						
						
							|  | 
 | 
						
						
						
							|  | __all__ = ['SharedDict', 'schedule']
 | 
						
						
						
							|  | 
 | 
						
						
						
							|  | try:
 | 
						
						
						
							|  |     uwsgi = importlib.import_module('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=searxngcache,items=2000,blocks=2000,blocksize=4096,bitmap=1'
 | 
						
						
						
							|  |         )
 | 
						
						
						
							|  |         from .shared_simple import SimpleSharedDict as SharedDict
 | 
						
						
						
							|  | 
 | 
						
						
						
							|  |         def schedule(delay, func, *args):
 | 
						
						
						
							|  |             return False
 | 
						
						
						
							|  | 
 | 
						
						
						
							|  |     else:
 | 
						
						
						
							|  |         # uwsgi
 | 
						
						
						
							|  |         from .shared_uwsgi import UwsgiCacheSharedDict as SharedDict, schedule
 | 
						
						
						
							|  | 
 | 
						
						
						
							|  |         logger.info('Use shared_uwsgi implementation')
 | 
						
						
						
							|  | 
 | 
						
						
						
							|  | storage = SharedDict()
 |